我设计的类继承于QSortFilterProxyModel,为了实现自定义过滤器,我重载了filterAcceptsRow,并在过滤每项的时候提前把Row以信号的形式传递出来,filterAcceptsRow的函数原型是
virtual bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const;
部分代码:
bool SignalProxyModel::filterAcceptsRow(int source_row, const QModelIndex& source_parent) const
{
SignalPtr signal = ((SignalModel*)this->sourceModel())->operator[](source_row); // 获得row
if (!signal.get()) return false;
if (signal->fieldStrength() == 0.603f) { // 这里假定过滤条件是fieldStrength() == 0.603f
//emit filterAcceptsASignal(signal); // 编译错误,这里无法发射信号
return true;
}
else {
//emit filterRejectsASignal(signal); // 编译错误,这里无法发射信号
return false;
}
}
目前遇到的问题是这样的:因为filterAcceptsRow函数原型为const函数,编译器无法在filterAcceptsRow函数内部非const的信号量,还请版主及各位高手帮忙,怎样解决该问题。