我看到QComboBox发生了这种奇怪的行为,一旦内容发生变化就不会更新。为了演示这里的问题,我们提供了一个示例代码和一些屏幕截图。
初始小部件
将项目添加到组合框(查看复选框的重叠方式)
手动调整更新大小并调整布局&组合框
#include <QApplication>
#include <QtGui>
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QWidget parentWidget;
QCheckBox checker;
QComboBox comber;
QHBoxLayout layoot;
comber.setEditable (true);
comber.setSizeAdjustPolicy(QComboBox::AdjustToContents);
layoot.addWidget (&comber);
layoot.addWidget (&checker);
parentWidget.setLayout(&layoot);
parentWidget.show();
return app.exec();
}
我在组合框上尝试了update()和repaint()以及编辑项目后的布局,但没有任何效果。 我是否真的必须手动调整小部件的大小以便组合框重新调整?有人知道修复这个问题吗?
谢谢。
CV
答案 0 :(得分:1)
对我来说这听起来像个错误,特别是如果在布局上手动调用update
没有效果。也许你所看到的是this bug。显然,在4.8.0中修复了一个。
答案 1 :(得分:0)
我同意这种奇怪的行为......
添加文字后添加parentWidget.resize(parentWidget.sizeHint()) ;
解决了问题,但它更像是一个黑客而不是一个答案。
编辑:
好的,您是否尝试了QComboBox::AdjustToContentsOnFirstShow
sizeAdjustPolicy?它符合您的需求吗?至少它解决了问题,即使对于嵌入式小部件也是如此