如何处理显示在屏幕外的 QDialog?

Posted

技术标签:

【中文标题】如何处理显示在屏幕外的 QDialog?【英文标题】:How to handle a QDialog displayed out of screen? 【发布时间】:2013-09-28 03:50:31 【问题描述】:

我有一个主要的寡妇。我将它移动到底部边缘或角落。然后我通过单击其中的某个按钮打开一个对话框。该对话框位于主窗口的中心,因为我将主窗口设置为其父窗口。但是,由于主窗口位于边缘或角落,因此对话框不会显示在屏幕上。如何让它显示在屏幕上?

【问题讨论】:

【参考方案1】:

你可以用负坐标move它,直到它出现在屏幕上:

dialog.move(-dialog.width(), -dialog.height())

这应该移动它,使其右下边缘与主窗口的左上边缘对齐。

或者您可以使对话框成为无父对话框,并将其相对于屏幕坐标移动:

dialog.setParent(None)
dialog.move(400, 300)

【讨论】:

你知道如何检查它是否超出屏幕吗? @user1899020: qt-project.org/doc/qt-5.1/qtwidgets/qwidget.html#visible-prop 但如果前者不起作用,您可以随时询问位置并与屏幕坐标进行比较。 @user1899020:这可能应该是另一个问题。但这取决于小部件是否有父级。

以上是关于如何处理显示在屏幕外的 QDialog?的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit - 如何处理多种屏幕尺寸?

QT 设置QDialog显示与隐藏系统按钮(最大小化等)

QT 设置QDialog显示与隐藏系统按钮(最大小化等)

QT 设置QDialog显示与隐藏系统按钮(最大小化等)

如何处理 libGDX 中的不同纵横比?

Ionic2如何处理屏幕阅读器文本?