我又开始使用 Qt 了。我们要做的是自动生成图形用户界面。因此,我仔细研究了 .ui 文件格式(这是一种基于 XML 的文件格式)。这些文件由 Qt Designer 生成,但可以由任何其他软件轻松创建。这部分工作到目前为止。
但是:我们想添加一些自定义小部件。创建自定义小部件也不是那么困难。那里有一些不错的网站:为 Qt 设计器创建自定义小部件,使用 Qt 设计器使用自定义小部件,(保留更多超链接),...
我的问题是:如何实现显示自定义项目的自定义小部件。让我们举一个例子。我们有一个 QComboBox 和一个 QSpinBox。组合框包含三个项目
- 一个
- 乙
- C。
选择“A”时,我希望将 spinbox 的最小值设置为 1,最大值设置为 9;选择“B”时,微调框的最小值应设置为 10,最大值为 99;选择“C”应该将 spinbox 的最小值设置为 100,最大值设置为 999。这是如何正确完成的?
目前我将数据设置在 QTableWidget 中,这对我来说是一个帮助类。每行有三列/单元格:
item | min | max
-----+------+-----
A | 0 | 9
B | 10 | 99
C | 100 | 999
我有我的自定义小部件,其中包含 QComboBox 和 QSpinBox。在运行时,我告诉自定义小部件从 QTableWidget 获取数据/模型并通过名为 setFriendContainer() 的方法复制到自身 [它甚至是一个公共插槽,应该连接到自动发出的来自 tablewidget 的信号]。之后不再需要 tablewidget 了!我什至根本不想向用户展示它(这就是为什么某些尺寸属性设置为 0;但它仍然部分可见)。
我认为这并不是一种真正干净的实现方式。什么会更好/替代?这些项目也会生成并且应该包含在同一个 .ui 文件中。当然可以在运行时从另一个文件加载它,但我认为这不是一个选择。您认为我的解决方法还可以,还是太“丑陋”?在一些示例中,您可以看到如何添加单个自定义属性,但我认为这是不同的 - 如果您想添加整个容器(项目列表或表格等)。但是在 .ui 文件中包含它甚至可能违反整个模型/视图的概念?!
欢迎任何帮助!
谢谢, 马蒂亚斯