我使用QDialog
。在构造函数中,我设置了setWindowFlags(Qt::Window)setWindowFlags(Qt::Window)
。在Linux / KDE上,效果是对话框获得了它自己的窗口栏按钮,并且可以在其父窗口(主窗口)后面。那就是我想要的。
但是,在Windows上,该对话框没有自己的窗口栏按钮,并且始终位于主窗口的顶部。在Windows上是否可以实现与在Linux上相同的行为?
我在玩Qt::WindowStaysOnTopHint
窗口标志,但没有效果。
答案 0 :(得分:1)
向QDialog传递一个NULL父对象,然后它独立于您的主窗口,并且可以位于主窗口后面。
然后在主窗口的closeEvent()函数中,调用myDialog-> close()。当您的主窗口退出时,这将关闭对话框。
答案 1 :(得分:0)
设置对话框父。例如,如果您正在显示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)"));
答案 2 :(得分:0)
我有同样的问题。我发现,如果您使用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)