gpt4 book ai didi

c++ - 修改 QDockWidget 默认捕捉位置?

转载 作者:行者123 更新时间:2023-11-28 04:22:55 24 4
gpt4 key购买 nike

我正在尝试将 UI 从 wxWidgets 应用程序建模到 QT。然而,在最初的应用程序中,它们有 Dock Widgets,除了占据主窗口外,它们可以固定到位并四处移动。

Example UI

除了主窗口外,每个框都像是一个停靠小部件。如果我想将数据集窗口(左上角)移动到输出调整窗口的右侧,我可以:

Example UI II

所以现在我的目标是尝试让 QT 中的 UI 至少完成主小部件左侧的停靠小部件。在我的例子中,我至少能够通过一些麻烦来获得宽度和高度来显示相同​​的值。但是,我无法像输出调整那样创建 QDockWidget 并将其紧靠在其他 QDockWidget 旁边。当我尝试移动停靠小部件时,另一个问题出现了,它不会捕捉到其他小部件的右侧或左侧。

My UI

这是我遇到的问题。我无法将它捕捉到停靠小部件的任一侧。这是需要硬编码的东西吗?我知道我在网上看到过与此布局非常相似的其他示例。但是它们都是硬编码的。如果我可以随着时间的推移使用创建器添加 slider 和工具栏,那就简单多了。如果这不是我必须硬编码的东西,我该如何修改我的小部件可以捕捉的位置?我尝试制作网格布局,但是小部件没有进入网格。

最佳答案

通过在主窗口中启用停靠嵌套,您可以更灵活地放置停靠小部件,包括并排放置停靠小部件。在 Qt Designer 中,选择主窗口并在 Property Editor 面板中选中 dockNestingEnabled 复选框(位于 QMainWindow 部分)。或者,您可以通过在代码中调用方法 QMainWindow::setDockNestingEnabled 来获得相同的结果。

如果您希望您的应用程序以引用应用程序中并排排列的停靠小部件开始,您必须求助于方法QMainWindow::splitDockWidget。例如,您可以在 Qt Designer 中创建如下所示的初始排列。

enter image description here

接下来,您可以在主窗口构造函数代码中重新排列停靠小部件,

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) {
ui->setupUi(this);

// Changes the dock widgets arrangement.
splitDockWidget(ui->dock1, ui->dock3, Qt::Orientation::Horizontal);
splitDockWidget(ui->dock1, ui->dock2, Qt::Orientation::Vertical);
}

这将产生以下结果。

enter image description here

关于c++ - 修改 QDockWidget 默认捕捉位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55032196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com