Qvalidator是否有可能显示弹出窗口

Is it possible for Qvalidator to show a popup

本文关键字:窗口 显示 是否 有可能 Qvalidator      更新时间:2023-10-16

我想知道qvalidator是否有可能显示弹出框,因为qlineitiat项目无效。我知道QValidator只会过滤输入,并且仅在数据有效时才显示数据。但是,我希望它显示我输入的数据并显示一个工具提示(弹出框),即输入无效。

您可以将要使用的特定验证器子类列为要使用并覆盖其validate方法,以便在验证后发出信号。例如,对于QIntValidator,您可以创建一个子类,如下(代码仅显示相关摘录):

标题文件:

class QIntValidatorReporter : public QIntValidator {
   Q_OBJECT;
public:
   QIntValidatorReporter(int minimum, int maximum, QObject * parent = 0);
   virtual QValidator::State validate(QString& input, int& pos ) const;
signals:
   void setError(const QString& msg) const;
};

.cpp文件:

QValidator::State QIntValidatorReporter::validate(QString& input, int& pos ) const {
   QValidator::State result = QIntValidator::validate(input, pos);
   if (result == QValidator::Invalid) {
      emit setError(QString("Allowed range: %1 to %2").arg(bottom()).arg(top()));
   } else {
      emit setError("");
   }
   return result;
}

通过根据需要将setError信号连接到任何插槽,您可以实现所需的功能以报告验证状态。

请参阅完整的示例项目。