【发布时间】:2011-04-25 16:45:13
【问题描述】:
我有一个 QDialog 实例,由使用 uic 生成的代码的小部件填充。该对话框包含一些垂直布局的标签,我不时弹出对话框以在这些标签中显示一些文本。文本可以是多行的,并且它的长度不是预先确定的。我将垂直大小策略设置为固定,因此用户无法拖动它(没有意义),但我还希望对话框在显示之前更改其大小以适应标签的当前大小。
为此,我在显示之前在 QDialog 上调用了 QWidget::adjustSize(),但它没有按预期工作。显示对话框时,它似乎保留了先前显示的(错误)大小,但是当我在(禁用)垂直调整大小模式下单击鼠标时,对话框突然“捕捉”到(正确)调整后的大小。
有什么方法可以让我的对话框正确显示?
编辑:我把 rubenvb 的建议联系起来,结果是这样的:
QSizePolicy free(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
QSizePolicy fixed(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
dialog->setSizePolicy(free);
dialog->adjustSize();
dialog->setSizePolicy(fixed);
dialog->show();
不幸的是,这似乎并没有改变什么。
【问题讨论】:
-
在调整其大小后尝试更新对话框以强制小部件重绘自身
-
你的意思是 QObject::update() 吗?
-
我的意思是 updateGeometry :doc.qt.nokia.com/latest/qwidget.html#updateGeometry