我有一个带有大文本框的对话框。我希望用户能够最大化对话框。我已经尝试了以下选项(XML_Editor
是QDialog
实例):
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上运行也会很棒。
我很欣赏任何提示。提前谢谢。
答案 0 :(得分:4)
主平台上的各种窗口管理器的行为都有所不同,因此很难找到100%保证在所有情况下都能正常工作的解决方案。
在Linux KDE上使用默认 windowFlags会生成一个包含上下文,最大化,最小化和关闭按钮的对话框;但是在Windows XP中,只有一个上下文和关闭按钮。
对于大多数平台,似乎至少需要设置WindowSystemMenuHint
和WindowMaximizeButtonHint
标志,以确保存在最大化按钮。
要确保对话框在父窗口中保持居中,只需在对话框的构造函数中传递对父对象的引用。
(注意,组合标志时,必须使用按位OR 运算符|
。在示例中,使用布尔OR 运算符{{ 1}},它将选择第一个非零值,但忽略其他值。)
以下示例在Linux KDE和Windows XP上为我生成一个带有最大化按钮的居中对话框:
or
答案 1 :(得分:0)
尝试获取父窗口的几何图形,然后将对话框移动到其中心,例如:
QRect pw = parent_widget->getGeometry();
XML_Editor.move(pw.center() - XML_Editor->rect().center());