如何根据其中一个孩子的文本长度自动调整QDialog的大小?

时间:2009-11-04 17:45:49

标签: qt nokia qdialog

我正在与QDialog合作。它有点像QMessageBox。我注意到QMessageBox的大小(及其标签的大小)取决于显示的消息的大小。

如何使QDialog的大小自动调整为QMessageBox?目前,我的QDialog包含一个按钮框和一个标签,QDialog是布局垂直。

(我知道我可以直接使用消息框但最终会有更复杂的对话框。)

3 个答案:

答案 0 :(得分:14)

自动解决方案:

使用布局并将尺寸政策设置为QSizePolicy::Expanding。在QtDesigner中,将所有孩子放在QDialog上,然后单击调整大小按钮下一个布局。您的QDialog将在运行时自动调整大小。

手动解决方案:

QWidget类有一个方法adjustSize,可以调整QWidget的大小以适应其内容。只要在设置好所有孩子后立即调用它。

答案 1 :(得分:1)

将对话框设置为展开,非常小。然后,请务必在显示对话框之前设置您的消息。如图所示,它将根据其包含的对象的大小尝试找到合适的大小。 (这是递归发生的,因此如果对话框不是您在其中显示消息的标签的直接父对象,请确保标签和对话框之间的所有内容都设置为使用布局。)

答案 2 :(得分:0)

提示:如果在隐藏对话框时尝试使用“ adjustSize()”功能,则可能不能正常工作。最好在“ show()”函数之后使用它。