2012-02-18 1 views
2

Это работает ...Почему не может быть скрыт 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? Мне нужно во время выполнения.

ответ

1

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

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

0
toolbar->actions().at(0)->setVisible(false); 
5

QAction * QToolBar::addWidget (QWidget * widget)

Вы должны скрыть вернулся QAction

+0

Интересное предложение. Это было бы элегантным решением, если большинство элементов панели инструментов - QActions, и на нем есть только один или два QWidgets. –

+0

Даже если вы добавите QWidget в QToolBar, он вернет 'QAction *' для него: 'QAction * QToolBar :: addWidget (QWidget * widget)' –