我在qt creator中编写了一个程序,但它包含了这个匿名的可拖动工具栏,我想摆脱它。它没有出现在设计模式中。如果我右键单击它,它会给我一个带复选框的菜单,我可以选择在程序运行时摆脱它。这个酒吧是什么?我怎么摆脱它?如果我知道它是什么,我可以通过编程方式告诉它在程序加载时隐藏。
以下是一些展示这个奇怪问题的截图。在第一个屏幕截图中,鼠标指向条形图。第二个演示右键单击上下文菜单。第三个显示没有条形的程序。该框也可以完全拖出程序窗口。如有必要,我也可以上传一张图片。
答案 0 :(得分:1)
您所拥有的内容可能是每个QDesigner创建的QMainWindow mainToolBar
文件所带来的QToolBar
.ui
对象。
如果您想摆脱它,请在.ui
文件中找到它,然后将其删除。
但最好三思而后行:你可能会在以后决定想要一个QToolBar对象和(至少AFAIK)无法在QDesigner中重新创建它......
答案 1 :(得分:1)
首先,确保您没有自己在代码中添加工具栏(Designer表单不是什么神奇的,它只生成ui_XXXX.h
的正常Qt代码,您应该完全学习,所以你了解真正发生的事情"引擎盖下#34;)。
其次,也许这是主菜单栏,而不是主要的工具栏。
然后,去除令人讨厌的酒吧。在“设计”视图的右上角,您有一个包含UI中所有项目的树。在那里找到QToolBar。它可能被称为mainToolBar
。右键单击它并将其删除。或者,如果您确实有菜单栏,则找到QMenuBar,可能称为menuBar
,然后将其删除。请记住在执行此操作之前进行版本控制提交(或其他备份),以便您可以轻松还原更改。
如果由于某种原因导致失败,并且您只想让它工作,您可以随时查找并删除(请注意留下的悬空指针,如果可能,请将它们设置为nullptr
):
ui->setupUi(this);
// a hack: we want to get rid of the toolbar and the menubar,
// but can't remove it from the .ui, so we delete them like this.
delete findChild<QToolBar *>(); // NULL return value is ok for delete
delete findChild<QMenuBar *>(); // NULL return value is ok for delete
findChild
和替代findChildren
的文档链接。
答案 2 :(得分:0)
您必须在构造函数中使用此代码。 的 UI-&GT; mainToolBar-&GT; toggleViewAction() - &GT;调用setVisible(假); 强>
mainToolBar是我的工具栏名称。