如何在qtcreator中摆脱这个匿名的可拖动栏?

时间:2016-03-20 06:52:30

标签: qt qt-creator

我在qt creator中编写了一个程序,但它包含了这个匿名的可拖动工具栏,我想摆脱它。它没有出现在设计模式中。如果我右键单击它,它会给我一个带复选框的菜单,我可以选择在程序运行时摆脱它。这个酒吧是什么?我怎么摆脱它?如果我知道它是什么,我可以通过编程方式告诉它在程序加载时隐藏。

以下是一些展示这个奇怪问题的截图。在第一个屏幕截图中,鼠标指向条形图。第二个演示右键单击上下文菜单。第三个显示没有条形的程序。该框也可以完全拖出程序窗口。如有必要,我也可以上传一张图片。

(鼠标指向酒吧) screen with box

(栏右键菜单!) right-click menu

(酒吧不见了) no more box

3 个答案:

答案 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是我的工具栏名称。