设置QValidator之后,会导致QLineEdit里的信号editingFinished()、returnPressed()等不能正常与外界绑定的槽不能正常连通。
时间: 2024-04-12 22:34:38 浏览: 46
是的,当使用QValidator设置了验证器后,会导致QLineEdit的信号`editingFinished()`和`returnPressed()`无法正常触发。这是因为验证器会在用户输入时进行验证,并在验证失败时阻止信号的传递。
如果您希望在QLineEdit中使用验证器的同时仍能正常触发这些信号并与外部槽函数连接,可以考虑以下两种解决方案:
1. 使用`QValidator::fixup()`函数:可以在验证器中重写`fixup()`函数,该函数用于修复用户输入的内容。在该函数中,您可以将用户输入转换为您期望的格式。例如,对于数字输入,可以将非数字字符删除或替换为默认值。这样,即使用户输入不符合验证器要求,也能确保信号正常触发,并在槽函数中处理修复后的值。
2. 使用`textChanged()`信号进行额外的验证:您可以使用`textChanged()`信号来监测用户输入的变化,并在槽函数中进行额外的验证。在这种情况下,可以选择不使用验证器,并在槽函数中手动验证用户输入的内容。如果验证成功,则可以执行相应的操作。
根据具体的需求和场景,选择适合的解决方案来处理与外部槽函数的连接和验证要求。
相关问题
qt文档里void QLineEdit::editingFinished()
QLineEdit::editingFinished() 是一个信号(signal),当 QLineEdit 编辑结束时会被触发。在用户完成对 QLineEdit 的编辑后,该信号会被发出,可以通过连接该信号的槽(slot)函数来执行一些操作,比如更新数据或保存文件等。
例如,下面的代码演示了如何连接 QLineEdit 的 editingFinished() 信号和自定义的槽函数,当用户编辑结束后,槽函数会将文本框中的内容显示在控制台上:
```cpp
QLineEdit *lineEdit = new QLineEdit();
connect(lineEdit, &QLineEdit::editingFinished, this, &MyClass::onLineEditEditingFinished);
// ...
void MyClass::onLineEditEditingFinished()
{
QString text = lineEdit->text();
qDebug() << "LineEdit text: " << text;
}
```
当用户编辑结束时,onLineEditEditingFinished() 函数会被调用,并输出文本框中的内容。
qvalidator 限制只能输入字母数字,不能输入. / \ c++
可以使用正则表达式来限制输入只能是字母和数字,不能包含`.`、`/`和`\`等字符。在 Qt 中,QRegExp 类可以用来处理正则表达式。
以下是一个示例代码,它限制用户在 QLineEdit 中输入只能是字母和数字,不能包含`.`、`/`和`\`等字符:
```cpp
QRegExp regExp("[^a-zA-Z0-9]");
QValidator* validator = new QRegExpValidator(regExp, this);
ui->lineEdit->setValidator(validator);
```
这里使用了 QRegExpValidator 类来实现输入限制,并将其设置为 QLineEdit 的 validator。`QRegExp("[^a-zA-Z0-9]")` 表示匹配除了字母和数字以外的任何字符。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)