ffifndef GOTOCELLDIALOG.H #define GOTOCELLDIALOG.H

#include <QDialog>

tfinclude "ui_gotocelldialog.h"

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

Q.OBJECT public:

GoToCellDialog(QWidget *parent = 0);

private slots:

void on_lineEdit_textChanged();

};

#endif

Реализация методов класса делается в файле gotocelldialog. срр: #include <QtGui> #include "gotocelldialog.h" GoToCellDialog::GoToCellDialog(QWidget *parent) : QDialog(parent)

{

setupUi(this);

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

connect(okButton, SIGNAL(clickedO). this, SL0T(accept())); connect(cancelButton, SIGNAL(clickedO), this, SLOT(rejectO));

}

void GoToCellDialog::on_lineEdit_textChanged() {

okButton->setEnabled(lineEdit->hasAcceptableInput());

}

В конструкторе мы вызываем setupUi() для инициализации формы. Благодаря множественному наследованию мы можем непосредственно получить доступ к членам класса Ui:: GoToCellDialog. После создания пользовательского интерфейса setupUi() будет также автоматически подключать все слоты с именами типа on_objectName_signalName() к соответствующему сигналу signalNameO виджета ob­jectName. В нашем примере это означает, что setupUi() будет устанавливать следую­щее соединение «сигнал-слот»:

connect(lineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(on_lineEdit_textChanged()));

Также в конструкторе мы задаем ограничение на допустимый диапазон вводи­мых значений. Qt обеспечивает три встроенных класса по проверке правильности значений: QlntValidator, QDoubleValidator и QRegExpValidator. В нашем случае мы ис­пользуем QRegExpValidator, задавая регулярное выражение «[A-Za-z][l-9][0-9]{0,2}», которое означает следующее: допускается одна маленькая или большая буква, за ко­торой следует одна цифра в диапазоне от 1 до 9; затем идут ноль, одна или две цифры в диапазоне от 0 до 9. (Введение в регулярные выражения вы можете найти в доку­ментации по классу QRegExp.)

Указывая в конструкторе QRegExpValidator значение this, мы его делаем дочер­ним элементом объекта GoToCellDialog. После этого нам можно не беспокоиться об удалении в будущем QRegExpValidator; этот объект будет удален автоматически пос­ле удаления его родительского элемента.


<< назад вперед >>