Qt笔记-3-LineEdit中使用正则表达

有时候我们希望在输入框中定义我们规定的输入方式,比如需要输入数字的而不能让用户输入字母的,需要用户刚好输入10位数的ID等,我们可以在Qt中定义一个正则的方法,这样用户就只能按规定的方式才能被接受。这是C++ GUI Qt4第二版第二章的一个例子。
下面是gotocelldialog.cpp内容

#include <QtGui>

#include "gotocelldialog.h"

GoToCellDialog::GoToCellDialog(QWidget *parent) : QDialog(parent) { setupUi(this);//这个函数初始化窗口,还可以将符合on_objectName_signalName()命名习惯的的任意槽与相应的objectName_signalName()信号连接起来。
    //这个地方就是connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(on_lineEdit_textChanged()));联系起来。

    QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}");
    lineEdit->setValidator(new QRegExpValidator(regExp, this));

    connect(okButton, SIGNAL(clicked()), this, SLOT(accept()));
    connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
}

void GoToCellDialog::on_lineEdit_textChanged() { okButton->setEnabled(lineEdit->hasAcceptableInput());
}

可以看到里面的QRegExp,控制着用户第一个只能是字母(大小写均可),然后是1-9的一个数字,然后是可以重复0-2次的0-9的数字。其他方式的输入在lineEdit中都是看不到的。感觉挺实用。顺便附上其他两个文件中的内容。

//main.cpp
#include <QApplication>

#include "gotocelldialog.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    GoToCellDialog *dialog = new GoToCellDialog;
    dialog->show();
    return app.exec();
}
//gotocelldialog.h
#ifndef GOTOCELLDIALOG_H
#define GOTOCELLDIALOG_H

#include <QDialog>

#include "ui_gotocelldialog.h"

class GoToCellDialog : public QDialog, public Ui::GoToCellDialog
{
    Q_OBJECT

public:
    GoToCellDialog(QWidget *parent = 0);

private slots:
    void on_lineEdit_textChanged();
};

#endif

你可能感兴趣的:(Qt笔记-3-LineEdit中使用正则表达)