2016-05-31 17 views
0

私はLinux上のQTで回路設計ソフトウェアを書こうとしています。私はKDE 5 PlasmaデスクトップとQTCreatorをIDEとして使用しています。ウィンドウ内の領域を無効にする方法はありますか?

私はそれにペイントするQFrame paintEventを使用しようとしました、そしてそれは働いたが、イムはQFrame内のウィンドウをつかんだときには、移動しました。

は私がQGraphicsViewについて知っているが、私は(それがリストされていない)カスタムクラスを作成し、それに基づいてそれを促進傾けます。

は、どのように私は私がペイントイベントをオーバーライドすることができますし、私はそれをつかむ場合も、それはウィンドウを移動しないコンテナ(QFrame、QGraphicsViewか何か)からのカスタムクラスを作成することができますか?

私の下手な英語のため申し訳ありません。

+0

あなたは物事の仕組みを正確に示すことができますか?メインの 'QFrame'の子として' QWidget'(または 'window')を入れますか?それとも、あなたの 'QFrame'がつかまったのですか?私はQTデザイナフォームクラスを作成し、QFrameを選択して、私はそれをキャンバスに名前を言うことができますので、いくつかのコードで非常に基本的な例は、 – coyotte508

+0

に役立つだろう、彼らはトップレベルのウィンドウを除いて最初の場所で手にすることができますどのように理解していません。私はQFrameをMainWindow.uiに入れて、それを "canvas"に昇格させた後、paintEventをオーバーライドできるクラスがありますが、実行時にQFrameをクリックしてマウスを動かすと、ウィンドウ全体QGraphicsViewは動いていませんが、QT Designerフォームクラスのどこにリストされていません。 –

+0

私は新しいqtプロジェクトを作成し、メインウィンドウの中央に緑色の背景を持つ 'QFrame'を置いてhttp://i.imgur.com/h5uzjL2.pngをクリックして移動しても何もしません。窓も動かない。問題がまだ発生している場合、短く、最小限の例を提供できますか? – coyotte508

答えて

0

QGraphicsViewは、QFrameから継承したQAbstractScrollAreaを継承しています。

フォームにQFrameを保存してキャンバスクラスに昇格させておくことができますが、代わりにキャンバスクラスにQGraphicsViewを継承させるだけです。

  • QFrameをクリックすると、マウスが私のために全体のウィンドウを移動しない移動:

    が、私QtはOPからの行動の2つの違いは、(私はKDEを使用していない)があります。私は、キャンバスクラスにvoid mousePressEvent (QMouseEvent * event)を再実装して、代わりに空のコードを与えることで、このOPの動作を変更できると思います。 (doc

  • 私は私のUIファイルでQGraphicsViewを置くことができる、と私は右の別のカスタム定義クラスにそれらを促進するためにそれらをクリックすることができます。

編集:見つかったreasonなぜKDE上でウィンドウが移動するのですか?

関連する問題