QRegExp不匹配任何内容

时间:2019-03-13 11:49:43

标签: c++ regex qt qt5 qregexp

我有另一个人提出的应用程序,需要修复它。视图上有一个图表,还有一个用于过滤图表的文本框,但过滤器不起作用。由于某种原因,QRegExp无法找到任何内容。

我正在使用QT5.12.1和VS2015。

void ChartWidget::filterSeriesByName(QString name) {
//  QString text=ui.lineEditFilterByName->text();
    QRegExp regExp(name, Qt::CaseSensitive);
    proxyModel->setFilterRegExp(regExp);
    setFilterLabel();

    foreach (QLegendMarker* marker, chart->legend()->markers())
    {
        if(regExp.isEmpty() || regExp.exactMatch(marker->series()->name())) {
            setMarkerVisible(marker,true,true);
        }
        else {
            setMarkerVisible(marker,true,false);
        }
    }
}

void ChartWidget::setFilterLabel() {
    //resetVerticalHeader();
    QString filteredCount = QString::number(proxyModel->rowCount()).append(" / ");
    filteredCount.append(QString::number(model->rowCount()));
    filteredCount.append(" kayıt gösteriliyor");

    ui.labelFilter->setText(filteredCount);

    QFont font = ui.labelFilter->font();
    if (proxyModel->rowCount() != model->rowCount()) {
        ui.labelFilter->setForegroundRole(QPalette::Link);
        font.setStyle(QFont::StyleItalic);
        ui.labelFilter->setFont(font);
    } else {
        ui.labelFilter->setForegroundRole(QPalette::WindowText);
        font.setStyle(QFont::StyleNormal);
        ui.labelFilter->setFont(font);
    }
}

1 个答案:

答案 0 :(得分:1)

我有一些类似的事情,当我向参数QString添加正则表达式时,它起作用了。试试这个:

....
QString filterStr = "^.*"+name+".*$";
QRegExp regExp(filterStr);
....