当我在 QT 中使用正则表达式时返回键不起作用C++



嘿,伙计们,我试图在QT中使用正则表达式进行在线编辑,但是当我使用正则表达式时,当我输入键盘上的返回键时做一些事情的函数不再工作了!

这是我的正则表达式在线编辑:

QRegularExpression r("[0-9\.\+\-\=\/\*n]{100}");
ui->lineEdit->setValidator(new QRegularExpressionValidator (r,this));

这是我的函数测试:

void MainWindow::on_lineEdit_returnPressed()
{
on_pushButton_14_clicked();
}

我也尝试了我的正则表达式没有"n"但这不会改变任何事情。当我注释正则表达式时,我的函数正常工作。

有解吗?

您的正则表达式需要支持长度为1的模式,因此,{100}量词应该替换为{1,100}甚至{0,100}

此外,您还可以在字符集中添加r(回车)字符,并删除不必要的转义:

QRegularExpression r("^[0-9.+=/*nr-]{1,100}$");

我添加了^$锚,以确保regex只匹配整个字符串(这里,行)。