C++ 排序和显示自定义QVariant类型
我有一个自定义类型,我想与QVariant一起使用,但我不知道如何让QVariant在表中显示或在QSortFilterProxyModel中排序 我用Q_DECLARE_元类型注册了该类型,并编写了通过qRegisterMetaTypeStreamOperators注册的流式运算符,但无论出于何种原因,当我将该类型与表模型一起使用时,它不会显示任何内容,也不会排序C++ 排序和显示自定义QVariant类型,c++,qt,C++,Qt,我有一个自定义类型,我想与QVariant一起使用,但我不知道如何让QVariant在表中显示或在QSortFilterProxyModel中排序 我用Q_DECLARE_元类型注册了该类型,并编写了通过qRegisterMetaTypeStreamOperators注册的流式运算符,但无论出于何种原因,当我将该类型与表模型一起使用时,它不会显示任何内容,也不会排序 我应该指定不能修改此自定义类型。它有一个副本和默认构造函数,但我无法进入并修改源代码以使其与QVariant一起工作。是否有一种非
我应该指定不能修改此自定义类型。它有一个副本和默认构造函数,但我无法进入并修改源代码以使其与QVariant一起工作。是否有一种非侵入式获取我想要的行为的方法?显示: 听起来您的模型没有为
DisplayRole
返回合理的内容。用于显示模型中所有内容的(通常是a)需要了解如何呈现为Qt::DisplayRole
返回的内容
您有两个主要选择:
您不能依赖比较运算符,因为它不适用于自定义类型,因此您需要实现自定义排序。谢谢您的回复。DisplayRole的data()返回的内容是包含自定义数据结构的QVariant。我应该退回一些不同的东西吗?我是否需要进入每个使用此自定义类型的模型,并反复应用相同的逻辑?这听起来需要做很多工作,但这可能是唯一的解决方案。您需要更改每个模型,或者在需要呈现自定义变量类型的每个视图上引入一个委托。您应该能够子类化
QStyledItemDelegate
并实现displayText
,以便它将自定义变量类型转换为字符串进行呈现。然后您可以调用yourView->setItemDelegate*()
来使用它。