07 Ui::GoToCellDialog ui;
08 QDialog *dialog = new QDialog;
09 ui.setupUi(dialog);
10 dialog->show();
11 return app.exec();
12 }
Теперь выполните команду
Полученный файл
class Ui::GoToCellDialog
{
public:
QLabel *label;
QLineEdit *lineEdit;
QSpacerItem *spacerItem;
QPushButton *okButton;
QPushButton *cancelButton;
…
void setupUi(QWidget *widget) {
…
}
};
Сгенерированный класс не наследует никакой Qt—класс. При использовании формы в
Если вы станете выполнять программу в данный момент, она будет работать, но не совсем так, как требуется:
• кнопка OK всегда будет в неактивном состоянии;
• кнопка Cancel не выполняет никаких действий;
• поле редактирования будет принимать любой текст, а оно должно принимать только допустимое обозначение ячейки.
Правильную работу диалогового окна мы можем обеспечить, написав некоторый программный код. Лучше всего создать новый класс, который наследует
Используя текстовый редактор, создайте файл с именем
01 #ifndef GOTOCELLDIALOG_H
02 #define GOTOCELLDIALOG_H
03 #include
04 #include "ui_gotocelldialog.h"
05 class GoToCellDialog : public QDialog, public Ui::GoToCellDialog
06 {
07 Q_OBJECT
08 public:
09 GoToCellDialog(QWidget *parent = 0);
10 private slots:
11 void on_lineEdit_textChanged();
12 };
13 #endif
Реализация методов класса делается в файле
01 #include
02 #include "gotocelldialog.h"
03 GoToCellDialog::GoToCellDialog(QWidget *parent)
04 : QDialog(parent)
05 {
06 setupUi(this);
07 QRegExp regExp("[A-Za-z][1-9][0-9]{0,2}");
08 lineEdit->setValidator(new QRegExpValidator(regExp, this));
09 connect(okButton, SIGNAL(clicked()),
10 this, SLOT(accept()));
11 connect(cancelButton, SIGNAL(clicked()),
12 this, SLOT(reject()));
13 }
14 void GoToCellDialog::on_lineEdit_textChanged()
15 {
16 okButton->setEnabled(lineEdit->hasAcceptableInput());
17 }