Q对话框:如何在Windows上启用位于父窗口(主窗口)后面



我使用QDialog。在构造函数中,我设置了setWindowFlags(Qt::Window)。在Linux/KDE上,效果是对话框获得了自己的窗口栏按钮,并且可以位于其父窗口(主窗口(后面。这就是我想要的。

然而,在Windows上,对话框没有自己的窗口栏按钮,它总是位于主窗口的顶部。有可能在Windows上实现与我在Linux上相同的行为吗?

我玩了Qt::WindowStaysOnTopHint窗口标志,但没有效果。

将一个NULL父级传递给您的QDialog,然后它独立于您的主窗口,可以位于主窗口后面。

然后在主窗口的closeEvent((函数中,调用myDialog->close((。这将在主窗口退出时关闭对话框。

通过将其this指针发送到对话框构造函数来设置对话框父级。例如,如果您正在显示一个QFileDialog以保持领先地位,请使用

QFileDialog::getOpenFileName(this,
tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)"));

而不是:

QFileDialog::getOpenFileName(NULL,
tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)"));

我也遇到了同样的问题。我发现,如果使用StaysOnTopHint,对话框甚至会位于其他窗口(而不仅仅是主应用程序窗口(的顶部。这对我来说很有用。代码是用Python编写的,但应该很容易翻译成C++。这里self.parent是应用程序主窗口。

if staysOnTop:
dialog.setParent(self.parent, Qt.Dialog | Qt.WindowMinimizeButtonHint | Qt.WindowMaximizeButtonHint | Qt.WindowCloseButtonHint)
else:
dialog.setParent(None, dialog.windowFlags() & ~Qt.WindowStaysOnTopHint)

相关内容

  • 没有找到相关文章

最新更新