Почему нельзя скрыть QToolButton после добавления в QToolBar?

Это работает...

QToolButton * toolbutton = new QToolButton(this);

//hide before addWidget
toolbutton->hide();

addWidget(toolbutton);

Но это не

QToolButton * toolbutton = new QToolButton(this)

addWidget(toolbutton);

//hide after addWidget
toolbutton->hide();

Есть ли альтернатива, чтобы я мог скрыться после QToolButton после его добавления в QToolBar? Мне нужно во время выполнения.


person Geore Shg    schedule 18.02.2012    source источник


Ответы (2)


Один из вариантов — добавить QAction вместо виджета, а затем скрыть QAction. Я пробовал, и он работает с QAction::setVisible(false).

Вы также можете сделать что-то вроде QToolBar::actions().at(3)->setVisible(false); если вы знаете положение виджета в QToolBar.

person Community    schedule 18.02.2012

QAction * QToolBar::addWidget ( QWidget * widget )

Вы должны скрыть возвращенный QAction

person Kamil Klimek    schedule 18.02.2012
comment
Интересное предложение. Это было бы элегантным решением, если большинство элементов вашей панели инструментов являются QActions и имеют только один или два QWidgets. - person ; 19.02.2012
comment
Даже если вы добавите QWidget в QToolBar, он вернет для него QAction *: QAction * QToolBar::addWidget ( QWidget * widget ) - person Kamil Klimek; 19.12.2012