如何控制QDialog的位置?

Posted

技术标签:

【中文标题】如何控制QDialog的位置?【英文标题】:How to control the position of QDialog? 【发布时间】:2009-10-08 15:05:09 【问题描述】:

是否有任何简单的方法可以在与上次打开应用程序时相同的位置打开 Qt 对话框?在应用程序会话之间保留对话框的位置?

通过简单的方法我的意思是不要在文件中手动写入窗口位置,然后读取:)

【问题讨论】:

你的意思是 QWidget 上的 setGeometry 之类的东西? 【参考方案1】:

您可以使用QSettings 类来实现这一点。它是一个抽象类,允许您的应用程序存储其设置,以便在下次启动时检索它们。

保存设置:

QSettings settings("ValueName",  "Value");

读取设置:

QString v = settings.value("ValueName");

【讨论】:

Qt 文档中甚至还有一个如何执行此操作的示例,地址为doc.trolltech.com/4.5/… 是的,它与 QSettings 类表示在同一页面上【参考方案2】:

将 QSettings 与 QWidget::restoreGeometry() 和 QWidget::saveGeometry() 一起使用。

【讨论】:

【参考方案3】:

最好保存 dialog->pos(), dialog->size(), dialog->isMaximized(),因为 dialog->saveGeometry() 不会最大化窗口。

QSettings 是保存配置的首选方式

【讨论】:

以上是关于如何控制QDialog的位置?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 QDialog 中的默认按钮行为

如何摆脱 QDialog 中的调整大小句柄?

QDialog如何半透明?

按下 QDialog Cancel 或 OK 时如何调用函数?

如何从QDialog刷新/更新/重绘QMainWindow?

如何在 qt5 上绘制 QDialog 的插入符号/箭头底部