return 当我在 QT C++ 中使用正则表达式时,密钥不起作用

return key doesn't work when i use regex in QT C++

大家好,我正在尝试在 QT 中使用正则表达式进行在线编辑,但是当我使用我的正则表达式时,当我在键盘上输入 return 键时执行某些操作的一个函数不再起作用!

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

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(回车return)个字符,去掉不必要的转义:

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

我添加了 ^$ 锚点以确保正则表达式只匹配整个字符串(这里是行)。