【问题标题】:How do I get rid of this anonymous draggable bar in qtcreator?如何摆脱 qtcreator 中的这个匿名可拖动栏?
【发布时间】:2016-06-22 15:29:20
【问题描述】:

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

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

(鼠标指向栏)

(栏有一个右键菜单!)

(酒吧不见了)

【问题讨论】:

标签: qt qt-creator


【解决方案1】:

首先,确保你没有在代码中自己添加工具栏(Designer 表单没有什么神奇之处,它只是生成普通的 Qt 代码到ui_XXXX.h,你应该完全研究它,这样你就会明白什么是真正的发生在“幕后”)。

其次,可能是主菜单栏,而不是主工具栏。

然后,继续删除讨厌的栏。在设计视图的右上角,您的 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】:

    你所拥有的可能是每个 QDesigner 创建的 QMainWindow .ui 文件中的 mainToolBar QToolBar 对象。 如果您想删除它,请在您的 .ui 文件中找到它并删除它。

    但最好三思而后行:您以后可能会决定想要一个 QToolBar 对象,并且(至少 AFAIK)没有办法在 QDesigner 中重新创建它...

    【讨论】:

    • 我的 mainwindow.ui 文件确实有任何 mainToolBar,甚至在搜索中的任何“栏”或“栏”。 mainwindow.ui 是我在 qtcreator 中看到的唯一 ui 文件。
    • 奇怪。您使用的是哪个 QtCreator 版本?我在创建一个新项目时得到了这个 QToolBar 对象(显然它也适合你?)。 QDesigner 插件对象视图(通常是设计器窗口的右上角视图)中最后三个对象是什么?
    • 我的 qtcreator 是 3.5.1 版。在对象视图中,唯一的对象是 MainWindow。 MainWindow 有一个 child,centralWidget,它唯一的孩子是程序的 tabWidget。
    • 一句警告:您通常不应该手动编辑.ui 文件,因为对于 Designer 来说很容易破坏它(也就是说,之后它将无法在 Designer 中正常工作)。它并不意味着要手动编辑(正如 Qt Creator 在您将其视为文本时拒绝这样做所证明的那样)。
    【解决方案3】:

    您必须在构造函数中使用此代码。 ui->mainToolBar->toggleViewAction()->setVisible(false);

    mainToolBar 是我的工具栏名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-07
      • 1970-01-01
      • 2017-08-02
      • 1970-01-01
      • 2016-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多