以下是一个示例代码,使用QIntValidator来实现对LineEdit输入的数字限制和取值范围控制:
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w;
QVBoxLayout *layout = new QVBoxLayout(&w);
QLineEdit *lineEdit = new QLineEdit(&w);
QIntValidator *validator = new QIntValidator(0, 20000, &w);
lineEdit->setValidator(validator);
layout->addWidget(lineEdit);
w.show();
return a.exec();
}
上述代码中,我们创建了一个QLineEdit对象,并通过QIntValidator类的构造函数设置了最小值为0、最大值为20000,然后将该验证器对象设置到LineEdit中,从而限制了用户只能输入0-20000之间的整数。
如果需要对用户在LineEdit中输入的内容进行验证或处理,可以使用QLineEdit::textChanged()信号或者QLineEdit::returnPressed()信号等。例如,下面的代码演示了如何使用textChanged()信号来显示当前LineEdit中输入的数字:
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w;
QVBoxLayout *layout = new QVBoxLayout(&w);
QLineEdit *lineEdit = new QLineEdit(&w);
QIntValidator *validator = new QIntValidator(0, 20000, &w);
lineEdit->setValidator(validator);
layout->addWidget(lineEdit);
QLabel *label = new QLabel(&w);
layout->addWidget(label);
QObject::connect(lineEdit, &QLineEdit::textChanged, [&label](const QString &text) {
bool ok;
int value = text.toInt(&ok);
if (ok && value >= 0 && value <= 20000) {
label->setText(QString("输入的数字为:%1").arg(value));
} else {
label->setText("请输入0-20000之间的整数");
}
});
w.show();
return a.exec();
}
上述代码中,我们创建了一个QLabel对象,并将其添加到窗口中。然后,我们通过QObject::connect()函数连接了LineEdit的textChanged()信号和一个Lambda表达式。该Lambda表达式会在用户输入内容时被调用,根据用户输入的内容判断是否符合要求,并将结果显示在Label中。这样,用户就可以实时看到自己输入的数字是否合法了。