添加新项目时,QCombobox会重叠其他小部件

时间:2011-12-01 17:34:22

标签: qt layout qcombobox

我看到QComboBox发生了这种奇怪的行为,一旦内容发生变化就不会更新。为了演示这里的问题,我们提供了一个示例代码和一些屏幕截图。

初始小部件 enter image description here

将项目添加到组合框enter image description here(查看复选框的重叠方式)

手动调整更新大小并调整布局&组合框enter image description here

#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

2 个答案:

答案 0 :(得分:1)

对我来说这听起来像个错误,特别是如果在布局上手动调用update没有效果。也许你所看到的是this bug。显然,在4.8.0中修复了一个。

答案 1 :(得分:0)

我同意这种奇怪的行为...... 添加文字后添加parentWidget.resize(parentWidget.sizeHint()) ;解决了问题,但它更像是一个黑客而不是一个答案。

编辑: 好的,您是否尝试了QComboBox::AdjustToContentsOnFirstShow sizeAdjustPolicy?它符合您的需求吗?至少它解决了问题,即使对于嵌入式小部件也是如此