【问题标题】:Best Qt Widget to use for properties window?用于属性窗口的最佳 Qt 小部件?
【发布时间】:2009-08-17 22:30:14
【问题描述】:

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

哦...属性分组也很好(我猜像一棵树)。并且属性编辑应该调用回调(发送信号)。

【问题讨论】:

    标签: qt properties


    【解决方案1】:

    Qt 设计器具有与您完全一样的属性。它们很可能是用 QTreeView 实现的。您可以随时查看源代码。

    【讨论】:

    • 您是说这是 Qt Designer 程序的一部分?哪个是开源的?不确定我是否想深入研究如此庞大的程序。我只需要一个简单的例子来看看 >.
    【解决方案2】:

    QTreeViewQTableView。使用专门的model 来处理所有(好的,大部分)繁重的工作,它可以处理您所有的类型限制和其他问题。也请查看delegates

    【讨论】:

    • 嗯,但是模型如何告诉 QTreeView 渲染一个 QSpinBox?
    • 这不是和setItemWidget一样吗?文档说要避免使用它并使用 deletgate 但模型似乎使用相同的方法来显示小部件?
    • @paulm:我很困惑。您的意思是您没有看到 delegates 和 setItemWidget 之间的显着差异?
    • QTreeWidget::setItemWidget 文档说“这个函数应该只用于显示静态内容来代替树形小部件项目。如果你想显示自定义动态内容或实现自定义编辑器小部件,请使用QTreeView 和子类 QItemDelegate 代替。”但似乎 QAbstractItemDelegate::createEditor 会导致调用 QTreeWidget::setItemWidget 以获取“动态”内容,所以不知道为什么会有这个警告?
    • @paulm:你的依据是什么? setItemWidget() 是 QTreeWidget 的非虚拟方法,但 QAbstractItemDelegate 可以与任何 QAbstractItemView 一起使用。另外,请注意文档告诉您使用完全不同的类:QTreeView 而不是 QTreeWidget。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多