int main(int argc, char *argv[]) {

QApplication app(argc, argv); Ui::GoToCellDialog ui;

QDialog *dialog = new QDialog;

ui.setupUi(dialog);

dialog->show();

return app.execO;

}

Теперь выполните команду qmake для создания файла с расширением . pro и за­тем создайте файл makefile (команды qmake -project; qmake gotocell. pro). Програм­ме qmake «хватит ума» обнаружить файл пользовательского интерфейса gotocelldia-log.ui и сгенерировать соответствующие команды для вызова uic - компилятора пользовательского интерфейса, входящего в состав средств разработки Qt. Компи­лятор uic преобразует gotocelldialog. ui в инструкции С++ и помещает результат в ui_gotocelldialog.h

Полученный файл ui_gotocelldialog.h содержит определение класса Ui: :GoTo-CellDialog, который содержит инструкции С++, эквивалентные файлу gotocelldia­log. ui. В этом классе объявляются переменные-члены, в которых содержатся дочер­ние виджеты и менеджеры компоновки формы, а также функция setupUi(), которая инициализирует форму. Сгенерированный класс выглядит следующим образом:

class Ui::GoToCellDialog {

public:

QLabel *label; QLineEdit *lineEdit; QSpacerltem *spacerltem; QPushButton *okButton; QPushButton *cancelButton;

void setupUi(QWidget *widget) {

}

};

Сгенерированный класс не наследует никакой Qt-класс. При использовании формы в main. срр мы создаем QDialog и передаем его функции setupUi().

Если вы станете выполнять программу в данный момент, она будет работать, но не совсем так, как требуется:

• кнопка ОК всегда будет в неактивном состоянии;

• кнопка Cancel не выполняет никаких действий;

поле редактирования будет принимать любой текст, а оно должно принимать только допустимое обозначение ячейки.

Правильную работу диалогового окна мы можем обеспечить, написав некоторый программный код. Лучше всего создать новый класс, который наследует QDialog и Ui: :GoToCellDialog и реализует недостающую функциональность (подтверждая известное утверждение, что любую проблему программного обеспечения можно ре­шить, просто добавив еще один уровень представления объектов). По нашим прави­лам мы даем этому новому классу такое же имя, которое генерируется компилято­ром uic, но без префикса Ui::.

Используя текстовый редактор, создайте файл с именем gotocelldialog. h, кото­рый будет содержать следующий код:


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