【问题标题】:Why filterAcceptsRow when inheriting from QSortFilterProxyModel is not invoked?为什么不调用从 QSortFilterProxyModel 继承时的 filterAcceptsRow?
【发布时间】:2016-01-17 13:39:54
【问题描述】:

有一个名为 customSortFilterProxyModel 的类继承自 QSortFilterProxyModel。并且一个受保护的函数 filterAcceptsRow 被覆盖。 但是,根本不调用 filterAcceptsRow。有什么问题? 谢谢。 customSortFilterProxyModel.h

class customSortFilterProxyModel: public QSortFilterProxyModel
        {
           Q_OBJECT

        public:
            customSortFilterProxyModel(QObject *parent);
            ~customSortFilterProxyModel();

        protected:
           virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;   
        };

//customSortFilterProxyModel.cpp
customSortFilterProxyModel::customSortFilterProxyModel(QObject *parent)
: QSortFilterProxyModel(parent)
{
}
customSortFilterProxyModel::~customSortFilterProxyModel()
{

}
bool customSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
{
   return true;
}

使用此代理模型测试代码

    QStringListModel *newModel = new QStringListModel;
    QStringList strList;
    strList << "1" << "2" << "3" << "4";
newModel->setStringList(strList);
    customSortFilterProxyModel   *m_customSortFilterProxyModel = new customSortFilterProxyModel(this);
       m_customSortFilterProxyModel->setSourceModel(newModel);

【问题讨论】:

    标签: c++ windows qt qsortfilterproxymodel


    【解决方案1】:

    为排序列调用此函数

    m_customSortFilterProxyModel->sort(0);

    【讨论】:

      【解决方案2】:

      我强制我的 customSortFilterProxyModel 重新加载源模型 设置源模型。有用。但我不确定这是否是正确的解决方案?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-09
        • 2014-01-31
        • 2016-09-07
        • 2020-01-23
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        相关资源
        最近更新 更多