我正在与QDialog
合作。它有点像QMessageBox
。我注意到QMessageBox
的大小(及其标签的大小)取决于显示的消息的大小。
如何使QDialog
的大小自动调整为QMessageBox
?目前,我的QDialog
包含一个按钮框和一个标签,QDialog
是布局垂直。
(我知道我可以直接使用消息框但最终会有更复杂的对话框。)
答案 0 :(得分:14)
自动解决方案:
使用布局并将尺寸政策设置为QSizePolicy::Expanding
。在QtDesigner中,将所有孩子放在QDialog上,然后单击调整大小按钮下一个布局。您的QDialog将在运行时自动调整大小。
手动解决方案:
QWidget
类有一个方法adjustSize
,可以调整QWidget的大小以适应其内容。只要在设置好所有孩子后立即调用它。
答案 1 :(得分:1)
将对话框设置为展开,非常小。然后,请务必在显示对话框之前设置您的消息。如图所示,它将根据其包含的对象的大小尝试找到合适的大小。 (这是递归发生的,因此如果对话框不是您在其中显示消息的标签的直接父对象,请确保标签和对话框之间的所有内容都设置为使用布局。)
答案 2 :(得分:0)
提示:如果在隐藏对话框时尝试使用“ adjustSize()”功能,则可能不能正常工作。最好在“ show()”函数之后使用它。