Question

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

Was it helpful?

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
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top