c++ - 如何获得验证结果 Qt?
问题描述
为了快速跳过 gui 代码,直接进入方法验证,我不知道,下一步是在单击登录按钮时获得验证结果。完整代码在这里https://pastecode.io/s/ut3cuq3p
class MainWindow: public QWidget
{
Q_OBJECT
public:
MainWindow(){ ... }
public slots:
void validate(QLineEdit* pUserInput)
{
QRegularExpression rx("^[^_\\W]+$");
QValidator* validator = new QRegularExpressionValidator(rx, this);
pUserInput->setValidator(validator);
// what property to get the validate result?
// i need to pass to QMessageBox
QMessageBox message;
message.setText(validateResult);
message.exec();
}
}
解决方案
在 a 上使用验证器时QLineEdit
,您希望查看 的值,pUserInput->hasAcceptableInput()
但可以更好地设置它。您只需在QLineEdit
创建验证器时将其分配给您(除非您的验证正则表达式每次都在更改),然后您可以使用信号QLineEdit::editingFinished
并QLineEdit::inputRejected
确定用户的输入是否可以接受 - 请参阅QLineEdit 文档
MainWindow::MainWindow()
{
...
QValidator* validator = new QRegularExpressionValidator(rx, this);
pUserInput->setValidator(validator);
connect(pUserInput, &QLineEdit::editingFinished, this, &MainWindow::validText);
connect(pUserInput, &QLineEdit::inputRejected, this, &MainWindow::invalidText);
...
}
void MainWindow::validText()
{
// pUserInput has valid input text
...
}
void MainWindow::invalidText()
{
// pUserInput has invalid input text
...
}
推荐阅读
- java - 如何搜索该列表
包含使用流的字符串的给定数组 [] 的所有值? - c++ - 从 boost fusion 适应结构中获取成员类型列表
- sql-server - 存储过程 SQL 注入检查
- javascript - 为什么我在 Node.js 上有 NaN?
- python - Python 请求速度非常慢
- javascript - 如何创建先运行的方法,然后再转到 vuejs 中的其他方法?
- php - Laravel 应用程序为 foreach() 错误提供的参数无效
- javascript - 使 javascript 推送菜单可滚动(无滚动条)
- javascript - Angular/TS/JS 使用另一个对象的属性值对现有(通用/任何)对象进行深度更新
- java - 玩家在数组中的位置