QCombobox перекрывает другие виджеты при добавлении нового элемента - PullRequest
1 голос
/ 01 декабря 2011

Я вижу, что это странное поведение происходит с 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();
}

Я пытался обновить () и repaint () в комбинированном ящике, а также макет после редактирования элемента, но не имеет никакогоэффект.Действительно ли мне нужно вручную изменить размер виджета, чтобы выпадающий список выполнился?Кто-нибудь знает о решении этой проблемы?

Спасибо.

CV

Ответы [ 2 ]

1 голос
/ 02 декабря 2011

Для меня это звучит как ошибка, особенно если ручной вызов update на макет не имеет никакого эффекта. Возможно, вы видите эту ошибку . Видимо, это исправлено в 4.8.0.

0 голосов
/ 01 декабря 2011

Я согласен, что это странное поведение ... добавление parentWidget.resize(parentWidget.sizeHint()) ; после добавления текста решило проблему, но это скорее взлом, чем ответ.

edit: ok, вы пробовали QComboBox::AdjustToContentsOnFirstShow sizeAdjustPolicyвместо?Это соответствует вашим потребностям?По крайней мере, это решает проблему даже для встроенного виджета

...