已经是腊月二十四了,不出什么意外的话这是农历2017年的最后一篇博客。今年一点过年的氛围都没有,年味真的淡了呢。
这几天写程序遇到一个小问题,在tableView中筛选字符的时候出现错误,鬼知道我是怎么发现这个问题的。功能就是类似于在同花顺的股票列表中筛选出带“中”字样的股票,然鹅,我发现筛选“*ST”的时候就不好使了。筛选使用的方法是QRegExp的setFilterRegExp方法,代码很简单:
QRegExp regExp(text, Qt::CaseInsensitive, QRegExp::RegExp);//text就是要筛选的字符串
QSortFilterProxyModel->setFilterRegExp(resExp);
所以想到问题可能是出在正则表达式中也包含“*”字符导致的筛选失败。找了半天找到一个合适的解决方法,就是在特殊字符前加上//或@就可以了,试了一下“@”可以,“//”不行
text = text.replace("*", "@*");
QRegExp regExp(text, Qt::CaseInsensitive, QRegExp::RegExp);//text就是要筛选的字符串
QSortFilterProxyModel->setFilterRegExp(resExp);
希望能帮助到你,祝大家狗年旺旺喽!