gpt4 book ai didi

c++ - Qvalidator是否可以显示弹出窗口

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:24:28 26 4
gpt4 key购买 nike

我想知道 QValidator 是否有可能在 QlineEdit 项目无效的情况下显示弹出框。我知道 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 信号连接到任何插槽,您可以实现所需的功能来报告验证状态。

参见 https://github.com/afester/StackOverflow/tree/master/Qt/QValidator一个完整的示例项目。

关于c++ - Qvalidator是否可以显示弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21390859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com