Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hiding Qt widget and keeping widget space

Tags:

layout

widget

qt

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?

like image 365
humberto Avatar asked Dec 09 '09 14:12

humberto


2 Answers

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).

like image 176
Thorbjørn Martsum Avatar answered Sep 25 '22 20:09

Thorbjørn Martsum


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).

like image 33
Thannoy Avatar answered Sep 23 '22 20:09

Thannoy