首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QML中的QAbstractListModel过滤/排序

QML中的QAbstractListModel过滤/排序
EN

Stack Overflow用户
提问于 2014-11-03 15:18:03
回答 2查看 4.7K关注 0票数 2

我有一个QAbstractListModel-derived C++类,它包含两种类型的东西的列表,例如:

代码语言:javascript
复制
class MyList : public QAbstractListModel
{
    Q_OBJECT
public:
    MyList();

    int rowCount(const QModelIndex& parent = QModelIndex()) const override
    {
        return mData.size();
    }

    QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override
    {
        int i = index.row();
        if (i < 0 || i >= mData.size())
            return QVariant(QVariant::Invalid);

        return QVariant::fromValue(mData[i]);
    }

private:
    QList<Something> mData;
};

假设数据有一个布尔成员,以便在QML中我可以这样做:

代码语言:javascript
复制
Repeater {
    model: myList
    Text {
        text: model.display.someBoolean ? "yes" : "no"
    }
}

我的问题很简单。如何使列表仅显示someBoolean为真的项?也就是说,我如何过滤列表?

我知道QSortFilterProxyModel,但文档中只提到了C++。我是否必须创建一个QAbstractItemModel*作为Q_PROPERTY of MyList,然后将QML模型设置为它?是像这样吗?

代码语言:javascript
复制
Repeater {
    model: myList.filteredModel

...

class MyList : public QAbstractListModel
{
    Q_OBJECT
    Q_PROPERTY(QAbstractItemModel* filteredModel READ filteredModel ... etc)
public:

有人有任何指导或例子吗?

注:我见过this question。它没有回答这个问题,而且看起来也不是关于QML的,尽管标题是这样的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-03 16:50:06

您需要对QSortFilterProxyModel进行子类化,并按照文档的建议在其中进行筛选。然后,您需要将QSortFilterProxyModel对象分配给所需的QML对象。这就是QML对象接收过滤数据的方式。

票数 3
EN

Stack Overflow用户

发布于 2016-08-16 14:53:18

如果您想要一种进行可视化筛选的方法,您可以让视图的委托不为不应该可见的项绘制。

代码语言:javascript
复制
Repeater {
    model: myList
    Text {
        text: model.display.someBoolean ? "yes" : "no"
    }
    delegate: {
        visible: model.someBoolean
        height: visible ? 30 /* or whatever height */ : 0
        // other drawing code here.
    }
}

这可能有其他视觉伪影(例如,如果您有基于索引的行颜色交替,行可能不能正确地交替),但是如果您想要一个快速和脏的过滤器,它可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26717209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档