あるかないトップレベルQtウィンドウに移転?
-
06-09-2019 - |
質問
私うかを判定するメインウィンドウに申し込んしています。メインウィンドウの標準QMainWindow今を設置eventFilterのQApplicationみmoveEventsのQMainWindowなっていきます。様々な理由は、サブクラスのQMainWindowのようになっています。
他になることを考えながら、起QTimer ttoを常にチェックの位置が大きくする。
解決
私はそれが代わりにアプリケーションの、トップレベルのウィンドウでイベントフィルタをインストールすることをお勧めだと思います。それでもQMoveEvent
sを得ることはありません、あなたがWindows上で作業している場合は、あなたはおそらくwinEventFilter()
をオーバーライドして、WM_MOVE
を待つことができます。同様の機能は、LinuxおよびMacのために利用可能であるかもしれない。
私は通常、プラットフォーム独立性を破ることはお勧めしませんが、時にはそれが意味をなすかもしれません。
他のヒント
サブクラスは本当に最良の解決策:-/
のクラスを実装するトップレベルウィンドウを表示すだけで過負荷にこの関数:
virtual void moveEvent ( QMoveEvent * event )
からのドキュメンテーション
このイベントハンドラです メソッドを実装し直しにサブクラスを受ける ウィジェットの移動イベントを渡され イベントパラメータとします。時にウィジェット を受けるこのイベントでは既に の新しい位置にします。
旧位置によりアクセス可能 QMoveEvent::oldPos().
ことを許可すべき検出する場合メインウィンドウが移転しました。 ができないのはなぜですサブクラス? を使用していまのインスタンス QMainWindow
す。通常の利用場合は、サブクラスです。