2015-10-19 265 views
2

有一个名为customSortFilterProxyModel的类继承自QSortFilterProxyModel。并且一个保护函数filterAcceptsRow是覆盖。 但是,filterAcceptsRow根本不被调用。会是什么? 谢谢。使用这种代理模型为什么filterAcceptsRow从QSortFilterProxyModel继承时不被调用?

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

回答

0

呼叫此功能进行排序列

m_customSortFilterProxyModel-> 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; 
} 

测试代码排序(0);

0

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

相关问题