我有一个 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();
不幸的是,这似乎并没有改变任何事情。