2016-03-21 4 views
0

私はQtのQWindowオブジェクトで作業しています。 フレームレスフラグが設定されると、ウィンドウはデフォルトの位置に固定されます。 このフラグが設定されたときに失われた可動性を取り戻すためにとにかくありますか?私はカップルさまざまな方法を試してみたが、それらはすべて、QWidgetのが枠のないQWindowを移動可能にする

+0

代わりに['QWindow :: setPosition'](http://doc.qt.io/qt-5/qwindow.html#setPosition)を使用しますか? – thuga

+0

動くことは、 'Qt :: FramelessWindowHint'があるときにマウスで動くことを意味しますか? OSに依存する可能性があることを認識していますか? Linux上では、LAlt + LMBを押すことによってこの可動性が得られます。 Windowsではそれは別の話になります。あるいは、あなたは何らかのマウスイベントを捕まえて、何とかあなたの自己によってそれを処理することができます。しかし、一見すると、それは私には複雑すぎるようです。 – Radek

+0

ありがとうthuga。 mousePressとmouseMoveイベントとともにsetPositionを使ってウィンドウを移動する方法を考えましたが、mouseReleaseを使ってみるとイベントは捕捉されません。まだいくつかのことを試す必要がありますが、チップについてもう一度お礼します。 – user3447816

答えて

0

あなたはQWidgetから継承し、mouseMoveEventmousePressEventmouseReleaseEventを上書きすることができますオブジェクトのためだけのようです移動()関数が必要です。マウスボタンが押されたときに、カーソル(中央かどうか)からカーソルまでの距離を記録します。ボタンがまだ押されている場合は、マウスが移動したときに移動します。

メンバー変数をbool trackingに、変数をQPoint deltaに追加すると、ウィンドウを移動する時間と移動距離を把握できます。

カスタムのスタイル可能なタイトルバーを追加できます。上で説明したようにQWidgetから継承し、すべてのトリミングを追加し、最も遠い祖先(nullでない限り、親または親の親)を移動させます。

関連する問題