我正在编写的应用程序有几个不同的页面,我用QStackedWidget
切换。我想要一个仅在某个页面处于活动状态时显示的工具栏。
我的初步计划是简单地从该页面调用addToolbar()
,但似乎仅 QMainWindow
具有addToolbar()
方法。因此,我将工具栏创建为页面的成员。当我切换到该页面时,我的QMainWindow
会占据QStackedWidget
并调用addToolbar(self.page.toolbar)
,而当我切换到removeToolbar(self.page.toolbar)
时,我会调用removeToolbar()
。
在addToolbar()
的文档中,它说:从主窗口布局中删除工具栏并隐藏它。请注意,工具栏不会被删除。
但似乎工具栏正在被删除。当我启动程序时,工具栏被隐藏,因为我想要它。当我切换到页面时,调用removeToolbar()
并显示工具栏。当我离开页面时,会调用addToolbar()
并再次隐藏它。到目前为止一切都很好。
问题在于,即使每次调用QToolBar
,我都会在下一次访问页面时再次显示工具栏。
我是否添加了隐藏的工具栏?我怎么能取消隐藏呢?
或者,是否可以将QMainWindow
绑定到任意小部件而不仅仅是{{1}}?
答案 0 :(得分:3)
我没有使用addToolBar
和removeToolBar
,而是使用QToolBar
的{{1}}。
在我想要工具栏的页面的小部件中,我创建工具栏并将其设置为toggleViewAction为false,然后触发它。这使得工具栏最初隐藏。
toggleViewAction()
然后每当我切换到页面或从页面切换时,我再次触发 self.toolbar = QtGui.QToolBar(self)
#add the toolbar to the main window
self.parent().addToolBar(self.toolbar)
#start hidden
self.toolbar.toggleViewAction().setChecked(False)
self.toolbar.toggleViewAction().trigger()
:
toggleViewAction()
通过浏览QToolBar文档,我觉得如此快速地找到答案是个傻瓜,但希望有人觉得这很有用。
答案 1 :(得分:0)
void setToolBarVisible(bool visibility)
{
if(visibility)
{
addToolBar(toolBar);
toolBar->show();
}
else
{
removeToolBar(toolBar);
}
}