Диалоговое окно изменения формы

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

QObject::connect(ui->moreButton, SIGNAL(toggled(bool)), 
    ui->sgroupBox, SLOT(setVisible(bool)));

но в моем диалоговом окне не происходит никаких изменений. Что мне делать в этом случае.

Я скрыл дополнительные детали, поместив их в сетку с помощью функции hide(). Дополнительные детали скрываются, но размер виджета не изменяется.

Пожалуйста, помогите мне с решением

1 ответ

Решение

Если я правильно понимаю ваш вопрос, вы пытаетесь изменить размер окна QDialog после нажатия кнопки в вашем пользовательском интерфейсе?

Поскольку QDialog наследуется от QWidget, вы можете вызвать метод QWidget::resize(int width, int height).

Теперь, чтобы заставить QDialog расти, когда вы нажимаете кнопку, вам просто нужно подключить переключаемый (bool) сигнал к слоту, который затем вызывает изменение размера.

то есть.

QObject::connect(ui->moreButton, SIGNAL(toggled(bool)), whateverClassManagesYourQDialog, onButtonToggled(bool));

Затем внедрите этот слот в ваш класс, который управляет вашим QDialog: т.е.

// This is a slot in your class which implements QDialog 
whateverClassManagesYourQDialog::onButtonToggled(bool toggledState){
    ui->sGroupBox.setVisible(toggledState); // This will show or hide sGroupBox
    resize(someIncrement,someIncrement); // This will grow your QDialog
}
Другие вопросы по тегам