In a simple form I made a few buttons and put a horizontal layout. When mouse leaves the area one of the buttons, the last one, should be hidden. Using button->hide()
it works, but all the buttons are rearranged by the layout manager. What I want is that all other buttons remain in their positions. I tried replacing the widget with a widget placeholder and swapping the button and placeholder hide()
/show()
, calling placeholder->resize(button->size())
, but the layout manager doesn't respect the resize, and the placeholder is set with its minimum size. What is the best way to remove a widget and keep its space?
In Qt 5.2 it is possible to do the following:
QSizePolicy sp_retain = widget->sizePolicy(); sp_retain.setRetainSizeWhenHidden(true); widget->setSizePolicy(sp_retain);
I earlier posted the same solution here:
How to make a Qt widget invisible without changing the position of the other Qt widgets?
(which seems to be a duplicate of this question).
Try to embed your widget into a QStackWidget having 2 pages: * your widget(s) on one page * another empty page
Set current qstackwidget page to the empty page when you want to hide your widget. And set it back to your main page to show back your widget(s).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With