【问题标题】:How to dock a QDockWidgets inside a QSplitter?如何将 QDockWidgets 停靠在 QSplitter 中?
【发布时间】:2019-08-03 11:56:56
【问题描述】:

我正在尝试让 QSplitter 在我的应用程序中接受 QDockWidgets。到目前为止,我已经通过 Qt Designer 完成了所有工作,我所做的是创建了三个单独的 QWidget。然后我选择所有三个 QWidgets 并右键单击它们并选择布局->在拆分器中垂直布局。

这很好地将所有三个小部件放在一个拆分器中。然后我将 Dock Widget 拖到右上角的 Object/Class Window 并将它们设置在 Splitters Widget 中。这会将 QDockWidget 愉快地放置在小部件中。但是,当我启动程序时,我无法单击并拖动停靠小部件。如果我双击停靠小部件,停靠小部件将弹出,但是我无法将其放回原处,因为它从未在技术上停靠过。然后产生了不允许小部件停靠在其他任何地方的问题。它不能停靠在 QMainWindow 类或 QSplitter 类中。

是否有一个 QDockWidget 停靠在 QSplitter 内并具有 QDockWidget 的功能?

【问题讨论】:

    标签: qt qtwidgets


    【解决方案1】:

    将停靠小部件添加到QSplitter 后,小部件已成为拆分器的一部分。

    你可以试试这样检查

    //If sure of Dockwidget at zeroth position
    QDockWidget *widget1 = (QDockWidget*)ui->splitter->children().at(0);
    

    Dockwidget 具有作为顶级窗口浮动的功能。 但是您可以通过设置QDockWidget::NoDockWidgetFeatures 使dockwidget 看起来像其他小部件

    要么:

    转到 Qtdesigner 中的对象窗口(顶部 -> 右侧) 并选择添加到拆分器的停靠小部件。

    在属性窗口中,向下滚动并查找“功能”。

    然后取消选中可移动,可关闭等功能...... 我把它做成了 NoDockWidgetFeatures。

    您可以使用setFeatures(QDockWidget::NoDockWidgetFeatures) 以编程方式设置

    【讨论】:

    • 对不起,我想我问的问题不清楚。我真正想要的是能够将dockWidgets 移动到其他QSplitter 位置。我遇到的问题是,在同一个属性窗口中,dockWidgetAreadocked 显示为灰色。所以我无法将小部件停靠在 QSplitter 中。
    • 你能不能试试这样的东西。它实际上不插入,而是随机排列位置.... ui->splitter->insertWidget(1,((QWidget*)ui->splitter->children().at(0)));
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 2011-11-11
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多