首页 > 解决方案 > 如何获得验证结果 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();
       }    
}

标签: c++qt

解决方案


在 a 上使用验证器时QLineEdit,您希望查看 的值,pUserInput->hasAcceptableInput()但可以更好地设置它。您只需在QLineEdit创建验证器时将其分配给您(除非您的验证正则表达式每次都在更改),然后您可以使用信号QLineEdit::editingFinishedQLineEdit::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
    ...
}

推荐阅读