Search code examples
qtqtguiqt-signals

Shape changing Dialog Box


I was trying to use a shape changing dialog box i.e., when I click on a button the size of the dialog box should become big with the extra details. In order to do that I wrote the following code on button:

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

but there are no changes happening on my dialog box. What should I do in this case.

I had hidden the extra details by placing them in a grid using hide() function. The extra details are getting hidden but the size of widget is not getting changed.

Please help me with a solution


Solution

  • If I understand your question correctly you are trying to resize your QDialog box after clicking on a button in your user interface?

    Since a QDialog inherits from a QWidget, you are able to call the QWidget::resize(int width, int height) method.

    So now, to make the QDialog grow when you press the button you simply need to connect the toggled(bool) signal to a slot which then calls resize.

    ie.

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

    Then implement this slot in your class that manages your QDialog: ie.

    // 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
    }