Qt - макет не сжимается при удалении виджета

Я работаю над диалогом изменения формы. Предполагается, что он увеличивается при нажатии кнопки «Дополнительно» и сжимается при повторном нажатии. Я использую layout() -> addWidget() и layout() -> removeWidget(). Он правильно увеличивается, когда я добавляю виджет, но когда я что-то удаляю, он не уменьшается. Я пытался использовать layout() -> update() и layout() -> updateGeometry(), но ни один из них не работал.

РЕДАКТИРОВАТЬ ** Вот функции, которые я вызываю при нажатии кнопок.

void findDialog::small()
{
    replaceBox -> hide();
    layout() -> removeWidget(replaceBox);
    moreButton -> show();
    updateGeometry();
}
void findDialog::extended()
{
    layout() -> addWidget(replaceBox);
    replaceBox -> show();
    moreButton -> hide();
    updateGeometry();
}

replaceBox is a QGroupBox

moreButton is a QPushButton

findDialog is a QDialog inherited class


person Michael    schedule 17.06.2015    source источник
comment
Попробуйте позвонить layout()->invalidate() перед обновлением, чтобы удалить кешированную информацию, может помочь   -  person Thalia    schedule 17.06.2015
comment
Это не сработало. Спасибо   -  person Michael    schedule 17.06.2015
comment
вы имеете в виду QWidget::updateGeometry()? Это должно помочь, если нет, добавьте больше контекста (фрагменты кода)   -  person Frank Osterfeld    schedule 17.06.2015
comment
@FrankOsterfeld Да, я имею в виду эту функцию.   -  person Michael    schedule 18.06.2015


Ответы (1)


Я решил это с помощью layout() -> setSizeConstraint(QLayout::SetFixedSize); Итак, теперь размер виджета всегда установлен на sizeHint() Вот почему макет не обновлялся, как я хотел. Таким образом, updateGeometry() не нужен.

person Michael    schedule 17.06.2015
comment
Вы спасли меня от головной боли этим, спасибо :) - person undu; 17.09.2015