最好用于属性窗口的Qt小部件是什么?

21

我需要一个类似于Visual Studio或NetBeans中的属性窗口的小部件,它基本上有两列:左侧是属性名称,右侧是值。该值需要能够限制为特定类型,例如'bool'或'float'(具有有效范围),但应该还支持更复杂的类型(可能需要单击时弹出对话框,然后在窗口中仅显示toString()版本)。我相信我可以自己添加大多数这些功能,但最好的基础小部件是什么?

哦......属性的分组也很好(就像树一样)。属性编辑应调用回调函数(发送信号)。

3个回答

7

Qt设计师拥有你想要的属性。它们很可能是使用QTreeView实现的。您可以随时查看源代码。

qt designer


6
你的意思是这是Qt Designer程序的一部分?而且这是开源的?我不确定是否想要查看如此庞大的程序,我只需要一个简单的示例 >.< - mpen

5
使用专门处理类型限制等问题的模型(QAbstractItemModel)来完成大部分繁重工作(好吧,大部分)。还要查看委托。可以使用QTreeViewQTableView来显示数据。请保留HTML标记。

模型应该如何告诉 QTreeView 渲染一个 QSpinBox 呢? - paulm
这不就是setItemWidget吗?文档说要避免使用它,而使用代理,但模型似乎使用相同的显示小部件方法? - paulm
@paulm:我有点困惑。你的意思是说,你没有看到委托和setItemWidget之间有明显的区别吗? - Steve S
QTreeWidget::setItemWidget文档中指出:“此函数仅应用于在树小部件项的位置显示静态内容。如果您想要显示自定义动态内容或实现自定义编辑器小部件,请改用QTreeView并子类化QItemDelegate。”但是,似乎QAbstractItemDelegate :: createEditor将导致对“动态”内容调用QTreeWidget :: setItemWidget,因此不确定为什么会有此警告? - paulm
@paulm:你的观点基于什么?setItemWidget()是QTreeWidget的非虚方法,但QAbstractItemDelegate适用于任何QAbstractItemView。此外,请注意文档告诉你使用完全不同的类:QTreeView而不是QTreeWidget。 - Steve S
我已经成功地使用QTreeWidget创建了一个非常漂亮的对象浏览器,并且在使用::setItemWidget时它完美地工作。我不知道为什么Qt不建议使用它,但对我来说它非常好用。 - santahopar

3

这里有一个指向Github的链接,它可能很有用。

enter image description here

另一个有用的链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接