首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QDialog:如何在Windows中启用位于父窗口(主窗口)之后?

QDialog:如何在Windows中启用位于父窗口(主窗口)之后?
EN

Stack Overflow用户
提问于 2018-12-02 00:40:19
回答 3查看 938关注 0票数 1

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

但是,在Windows上,该对话框没有自己的窗口栏按钮,并且它始终位于主窗口的顶部。是否可以在Windows上实现与在Linux上相同的行为?

我尝试使用Qt::WindowStaysOnTopHint窗口标志,但它没有任何效果。

EN

回答 3

Stack Overflow用户

发布于 2019-01-16 03:58:25

传递给你的QDialog一个空的父窗口,然后它就独立于你的主窗口,并且可以在主窗口后面。

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

票数 1
EN

Stack Overflow用户

发布于 2018-12-02 17:19:24

通过将this指针发送到您的对话框构造函数来设置对话框父对象。例如,如果您正在显示一个QFileDialog以保持最高使用率

代码语言:javascript
复制
QFileDialog::getOpenFileName(this,
    tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)"));

而不是:

代码语言:javascript
复制
QFileDialog::getOpenFileName(NULL,
    tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)"));
票数 0
EN

Stack Overflow用户

发布于 2018-12-12 00:44:21

我也有同样的问题。我发现如果你使用StaysOnTopHint,对话框甚至会停留在其他窗口的顶部(不仅仅是主应用程序窗口)。这对我来说很管用。代码是用Python语言编写的,但是应该很容易翻译成C++。其中,self.parent是应用程序的主窗口。

代码语言:javascript
复制
        if staysOnTop:
            dialog.setParent(self.parent, Qt.Dialog | Qt.WindowMinimizeButtonHint | Qt.WindowMaximizeButtonHint | Qt.WindowCloseButtonHint)
        else:
            dialog.setParent(None, dialog.windowFlags() & ~Qt.WindowStaysOnTopHint)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53572903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档