Qt快速动态自定义布局(如IDE中的工作区)

时间:2018-06-27 19:53:48

标签: qt qml

我正在处理的项目需要很大一部分的工作区布局,这意味着用户可以像在VSCode中一样在窗格之间移动,调整窗格大小,关闭窗格等(但更像是Emacs,因为VSCode当前不支持垂直和水平拆分。

我正在考虑的当前方法是创建一个具有json对象的自定义LayoutManager,并将视图以类似于二叉树的结构注入到递归RowColumn对象中。在开始这项工作之前,我想知道是否有一个库或一组QtQuick(QML)元素可以让我更轻松地完成此任务,或者是否有解决此问题的更好方法。或者,请告诉我为什么我这样做不对。

注意:我使用的技术是带有Qt 5(当前为5.10)的C ++。

1 个答案:

答案 0 :(得分:1)

如果您想要高度可定制的GUI,并且可以选择持久化UI配置,那么最好设计整个模型驱动的对象。

QML已经具有必要的内容-列表视图,转发器等。 QML与树模型有点矛盾,但是您实质上可以使用列表列表来伪造一棵树。

模型provided here可以解决问题,其附加好处是它还支持声明性实例化。因此,您可以像使用普通QML一样轻松地以声明方式设置初始GUI状态,但随后允许用户对该初始状态进行修改,然后可以保存和调用该初始状态。

然后您要做的就是将所需的GUI元素绑定到基础模型数据源对象。