繁体   English   中英

排序和显示自定义QVariant类型

[英]Sorting and displaying a custom QVariant type

我有一个想与QVariant一起使用的自定义类型,但是我不知道如何使QVariant显示在表中或如何在QSortFilterProxyModel中进行排序。

我使用Q_DECLARE_METATYPE注册该类型,并编写了通过qRegisterMetaTypeStreamOperators注册的流运算符,但是由于某种原因,当我将这种类型与表模型一起使用时,它不会显示任何内容,也不会进行排序。

我应该指定不能修改此自定义类型。 它具有一个副本和默认构造函数,但我无法修改源代码以使其与QVariant一起使用。 有没有一种非侵入式获得我想要的行为的方法?

显示方式

听起来您的模型没有为DisplayRole返回有意义的内容。 用于显示模型中所有内容的QAbstractItemDelegate (通常为QStyledItemDelegate )需要了解如何呈现Qt::DisplayRole data()返回的内容。

您有两个主要选择:

  1. 修改模型,使其返回一个合理的Qt :: DisplayRole ,或者
  2. 子类化现有委托之一,并对其进行修改,以便它可以正确显示您的自定义变量类型。

如果要编辑该类型的项目,则需要调用registerEditor,以便可以将自定义类型与编辑器相关联。 请参阅QItemEditorFactory文档

排序

您不能依靠QVariant的比较运算符,因为它不适用于自定义类型,因此您需要实现QSortFilterProxyModel::lessThan才能进行自定义排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM