參考:Qt中LineEdit編輯框限制數(shù)字輸入整理
運行環(huán)境:win10,VS2022,QT6.3
2022/1/12 添加槽函數(shù)版本,要獲取發(fā)送者。方便復用,可多個lineedit連同一個槽函數(shù)。
ui界面布局,就放了一個qlineEdit和一個button
undoTest.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_undoTest.h"
class undoTest : public QMainWindow
{
Q_OBJECT
public:
undoTest(QWidget *parent = Q_NULLPTR);
// 設置lineedit輸入范圍
void SlotLineEditLimit();
private:
Ui::undoTestClass ui;
};
undoTest.cpp文章來源:http://www.zghlxwxcb.cn/news/detail-647374.html
//#pragma execution_character_set("utf-8")
#include "undoTest.h"
#include <QRegularExpression>
#include <QRegularExpressionValidator>
#include <QtCore5Compat\QRegExp>
#include <QMessageBox>
#include <QObject>
#include <QValidator>
undoTest::undoTest(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
//qt5方法
//QRegExp qregexp("[0-9\\.-]+$");
//QValidator* validator = new QRegExpValidator(qregexp);
//qt6方法
QRegularExpression regExp("[0-9\\.-]+$");
QRegularExpressionValidator* validator = new QRegularExpressionValidator(regExp, this);
ui.lineEdit->setValidator(validator);
connect(ui.lineEdit, &QLineEdit::editingFinished, [=](void) {
double val = ui.lineEdit->text().toDouble();
if (val<0||val>100)
{
QMessageBox box(QMessageBox::Information, QString::fromUtf8("提示"),
QString::fromUtf8("請輸入1-100范圍內的數(shù)字!"), QMessageBox::Ok, this);
box.exec();
ui.lineEdit->setFocus();
ui.lineEdit->setCursorPosition(ui.lineEdit->text().size());
ui.lineEdit->selectAll();
ui.lineEdit->undo();
}
});
// or
connect(ui.lineEdit, &QLineEdit::editingFinished, this, &undoTest::SlotLineEditLimit);
}
void undoTest::SlotLineEditLimit()
{
QLineEdit * this_lineedit = qobject_cast<QLineEdit*>(sender());
double val = this_lineedit->text().toDouble();
if (val < 1 || val>100)
{
QMessageBox box(QMessageBox::Information, QString::fromUtf8("提示"),
QString::fromUtf8("請輸入1-100范圍內的數(shù)字!"), QMessageBox::Ok, this);
box.exec();
this_lineedit->setFocus();
this_lineedit->setCursorPosition(this_lineedit->text().size());
this_lineedit->selectAll();
this_lineedit->undo();
}
}
main.cpp文章來源地址http://www.zghlxwxcb.cn/news/detail-647374.html
#include "undoTest.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
undoTest w;
w.show();
return a.exec();
}
到了這里,關于Qt|QLineEdit輸入限制以及給出提示并復原值的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!