我创建了一个名为PageRangeListWidgetItem的新类,它继承自QListWidgetItem
class PageRangeListWidgetItem : public QListWidgetItem
{
...
private:
int start, end;
bool operator<(const PageRangeListWidgetItem &other) const {
if (start == other.start)
return end < other.end;
return start < other.start;
}
};
并且这些项目正通过用户输入添加到QListWidget。 QListWidget只包含这些PageRangeListWidgetItem,所以我希望通过调用QListWidget的sortItems()函数,它将使用重载的运算符&lt;根据我的喜好对项目进行排序,但不幸的是,它不会对列表进行排序,就像它包含纯QListWidgetItems一样。
如何更改此行为?我是否必须创建自定义QListWidget类或者是否有更简单的方法?
答案 0 :(得分:1)
Qt框架调用的<
函数是
virtual bool operator<(const QListWidgetItem &other) const
您定义的那个与此函数签名(PageRangeListWidgetItem
而不是QListWidgetItem
)不匹配,因此不会覆盖虚函数而不会被调用。
您需要编写一个<
函数,该函数接收QListWidgetItem
并使用该对象进行排序而不是自定义对象。