【发布时间】:2010-12-13 03:04:13
【问题描述】:
我正在使用QDialog。它有点像QMessageBox。我注意到QMessageBox 的大小(及其标签的大小)取决于所显示消息的大小。
如何让QDialog 的大小像QMessageBox 一样自动调整?目前我的QDialog 包含一个按钮框和一个标签,QDialog 是垂直布局。
(我知道我可以直接使用消息框,但最终我会有更复杂的对话框。)
【问题讨论】:
我正在使用QDialog。它有点像QMessageBox。我注意到QMessageBox 的大小(及其标签的大小)取决于所显示消息的大小。
如何让QDialog 的大小像QMessageBox 一样自动调整?目前我的QDialog 包含一个按钮框和一个标签,QDialog 是垂直布局。
(我知道我可以直接使用消息框,但最终我会有更复杂的对话框。)
【问题讨论】:
将您的对话框设置为扩展且非常小。然后,请务必在显示对话框之前设置您的消息。显示时,它将尝试根据其包含的对象的大小找到其合适的大小。 (这会递归发生,因此如果对话框不是您显示消息的标签的直接父级,请确保标签和对话框之间的所有内容都设置为使用布局。)
【讨论】:
自动解决方案:
使用布局并将大小策略设置为QSizePolicy::Expanding。在 QtDesigner 中,一旦您的所有孩子都放在 QDialog 上,然后单击 Adjust Size 按钮下一个布局。您的 QDialog 将在运行时自动调整大小。
手动解决方案:
QWidget 类有一个方法adjustSize 可以调整 QWidget 的大小以适应其内容。设置所有子节点后调用它。
【讨论】:
提示:如果您在对话框隐藏时尝试使用“adjustSize()”函数,它可能不会正常工作。最好在“show()”函数之后使用。
【讨论】: