将“最大化”按钮添加到PyQt4对话框,并使对话框保持居中于父窗口

时间:2012-01-23 09:24:55

标签: ubuntu qt4 dialog pyqt pyqt4

我有一个带有大文本框的对话框。我希望用户能够最大化对话框。我已经尝试了以下选项(XML_EditorQDialog实例):

XML_Editor.setWindowFlags(QtCore.Qt.Window or QtCore.Qt.WindowMaximizeButtonHint) - 显示“最大化”按钮,但不会使对话框w.r.t居中。父母了

XML_Editor.setWindowFlags(QtCore.Qt.Dialog or QtCore.Qt.WindowMaximizeButtonHint or QtCore.Qt.CustomizeWindowHint) - 没效果

现在我的问题是:我如何实现显示最大化按钮,并且对话框以w.r.t为中心弹出。父母?网络上的大多数资源似乎都集中在如何摆脱最大化按钮上。任何想法如何实现相反的目标?

主要目标是Ubuntu 10.04(默认配置),如果它在Windows和Mac上运行也会很棒。

我很欣赏任何提示。提前谢谢。

2 个答案:

答案 0 :(得分:4)

主平台上的各种窗口管理器的行为都有所不同,因此很难找到100%保证在所有情况下都能正常工作的解决方案。

在Linux KDE上使用默认 windowFlags会生成一个包含上下文,最大化,最小化和关闭按钮的对话框;但是在Windows XP中,只有一个上下文和关闭按钮。

对于大多数平台,似乎至少需要设置WindowSystemMenuHintWindowMaximizeButtonHint标志,以确保存在最大化按钮。

要确保对话框在父窗口中保持居中,只需在对话框的构造函数中传递对父对象的引用。

(注意,组合标志时,必须使用按位OR 运算符|。在示例中,使用布尔OR 运算符{{ 1}},它将选择第一个非零值,但忽略其他值。)

以下示例在Linux KDE和Windows XP上为我生成一个带有最大化按钮的居中对话框:

or

答案 1 :(得分:0)

尝试获取父窗口的几何图形,然后将对话框移动到其中心,例如:

QRect pw = parent_widget->getGeometry();
XML_Editor.move(pw.center() - XML_Editor->rect().center());