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 виджета objectName. В нашем примере это означает, что 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; этот объект будет удален автоматически после удаления его родительского элемента.
<< назад вперед >>