修改QDockWidget默认捕捉位置?

时间:2019-03-06 21:10:33

标签: c++ qt qwidget qdockwidget

我正在尝试从wxWidgets应用程序到QT建模UI。但是,在原始应用程序中,它们具有Dock Widget,这些Dock Widget可以卡入到位并四处移动,除了占用主窗口。

Example UI

每个框似乎都是停靠窗口小部件,但主窗口除外。而且,如果我想将“数据集”窗口(左上方)移至“输出调整”窗口的右侧,我可以:

Example UI II

所以现在我的目标是尝试在QT中获得UI,以至少完成主窗口小部件左侧的停靠窗口小部件。在我的情况下,我至少能够获得一些宽度和高度,但很难找到相同的宽度和高度。但是,我不能像输出调整一样创建QDockWidget并使其紧挨其他。另一个问题是当我尝试移动停靠小部件时,它将不会对齐到其他小部件的右侧或左侧。

My UI

这是我遇到的问题。我无法将其吸附到停靠小部件的任何一侧。这需要硬编码吗?我知道我在网上看到了其他示例,这些示例看起来都非常类似于此布局。但是它们都是硬编码的。如果我可以随时间推移使用创建者添加滑块和工具栏,将会更加简单。而且,如果我不需要硬编码,该如何修改小部件可以捕捉的位置?我试图进行网格布局,但是小部件没有进入网格。

1 个答案:

答案 0 :(得分:1)

通过在主窗口中启用停靠嵌套,您可以实现停靠窗口小部件的更灵活放置,包括并排放置停靠窗口小部件。在Qt Designer中,选择主窗口,然后在@Embedded面板中选中Property Editor复选框(在dockNestingEnabled部分中)。另外,您可以通过在代码中调用方法QMainWindow来获得相同的结果。

如果您希望应用程序以与参考应用程序中并排排列的停靠小部件开始,则必须采用方法QMainWindow::setDockNestingEnabled。例如,您可以在Qt Designer中创建一个初始布置,如下图所示。

enter image description here

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

QMainWindow::splitDockWidget

这将产生以下结果。

enter image description here