• 5529阅读
  • 0回复

使用QSortFilterProxyModel,重载filterAcceptsRow遇到的问题,版主高手帮忙 [复制链接]

上一主题 下一主题
离线advanceduser
 

只看楼主 倒序阅读 楼主  发表于: 2009-04-21
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
我设计的类继承于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的信号量,还请版主及各位高手帮忙,怎样解决该问题。
快速回复
限100 字节
 
上一个 下一个