1

mainWindow(QMainWindowから継承)でchildWindow(QMainWindowからも継承)を作成するアプリケーションがあり、実行すると、mainWindowをマスキングするchildWindowで両方のウィンドウが起動されます。

私が持っている mainWindow() コンストラクターで

setCentralWidget(this);

Linux では、mainWindow->titleBar をクリックすると、mainWindow が前面に表示されますが、Windows では機能しないようです。

プラットフォーム間で一貫した動作を実現するために、installEventFilter() と mouseEventHandler を追加して、左ボタンのマウス イベントを考慮しましたが、マウス イベント ハンドラー内で使用したどのメソッドも、必要な動作を実現するのに役立ちませんでした。

void mainWindow::mouseReleaseEvent(QMouseEvent* mevent)
{
  if (Qt::LeftButton == mevent->button())
  {
    //this->raise();
    //this->show();
    //setCentralWidget(this);

  }
}

タイトル バーを押すと (マウス イベント)、mainWindow() に切り替えるにはどうすればよいですか? Windows と Linux で動作が異なる理由はありますか? また、動作を一貫させるにはどうすればよいですか? Windows および Linux 用の Qt-4.8.4 のオープンソース バージョンを使用しています。

4

1 に答える 1

1

もうこの機能を使ってみましたか?

http://doc.qt.io/qt-4.8/qwidget.html#stackUnder

これと組み合わせて使用​​しますQFocusEvent

http://doc.qt.io/qt-4.8/qwidget.html#focusInEvent

http://doc.qt.io/qt-4.8/qfocusevent.html#details

于 2013-05-31T20:25:11.253 に答える