1

我有一个应用程序,其中在 mainWindow(继承自 QMainWindow)中创建了一个 childWindow(也继承自 QMainWindow),并且在运行时,两个窗口都以 childWindow 掩蔽 mainWindow 的方式启动。

在 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 回答