我使用QDialog。在构造函数中,我设置了setWindowFlags(Qt::Window)setWindowFlags(Qt::Window)。在Linux/KDE上,效果是对话框有自己的窗口栏按钮,并且可以移到其父窗口(主窗口)的后面。这就是我想要的。
但是,在Windows上,该对话框没有自己的窗口栏按钮,并且它始终位于主窗口的顶部。是否可以在Windows上实现与在Linux上相同的行为?
我尝试使用Qt::WindowStaysOnTopHint窗口标志,但它没有任何效果。
发布于 2019-01-16 03:58:25
传递给你的QDialog一个空的父窗口,然后它就独立于你的主窗口,并且可以在主窗口后面。
然后在主窗口的closeEvent()函数中,调用myDialog->close()。这将在您的主窗口退出时关闭对话框。
发布于 2018-12-02 17:19:24
通过将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)"));发布于 2018-12-12 00:44:21
我也有同样的问题。我发现如果你使用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)https://stackoverflow.com/questions/53572903
复制相似问题