Читать «QT 4: программирование GUI на С++» онлайн - страница 10

Жасмин Бланшет

qmake -project

для создания файла проекта, независимого от платформы (hello.pro), и затем задайте команду:

qmake hello.pro

для создания на основе файла проекта зависимого от платформы файла makefile.

Выполните команду make для построения программы . Затем выполняйте программу, задавая команду hello в системе Windows или ./hello в системе Unix и open hello.app в системе Mac OS X. Для завершения программы нажмите кнопку закрытия окна, расположенную в заголовке окна. Если вы используете Windows и установили версию Qt с открытым исходным кодом вместе с компилятором MinGW, вы получите ярлык для окна DOS, в котором переменные среды правильно настроены на Qt. Вызвав это окно, вы можете компилировать в нем Qt—приложения, используя описанныевыше команды qmake и make. Формируемые исполнительные модули помещаются в папку debug или release, например, C:\qt-book\hello\release\hello.exe.

Если вы используете Visual С++ компании Microsoft, то вам потребуется выполнить команду nmake, а не make. Здесь вы можете поступить по-другому и создать проект в Visual Studio на основе файла hello.pro, выполняя команду:

qmake -tp vc hello.pro

и затем выполнить построение программы в системе Visual Studio. Если вы используете Xcode на Mac OS X, то можете сгенерировать проект Xcode с помощью следующей команды:

qmake -spec macx-xcode

Рис. 1.2. Текстовая метка с простым форматированием HTML.

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

QLabel *label = new QLabel("Hello Qt!");

на строку

QLabel *label = new QLabel("<h2><i>Hello</i> "

"<font color=red>Qt!</font></h2>");

и снова выполним построение приложения. Как иллюстрирует этот пример, совсем не трудно выделять элементы пользовательского интерфейса Qt—приложения с использованием некоторых простых средств форматирования документов HTML.

Взаимодействие с пользователем

Второй пример показывает возможности взаимодействия пользователя с программой. Приложение представляет собой кнопку, которую пользователь может нажать и тогда приложение закончит свою работу. Исходный код этой программы очень напоминает исходный код программы Hello, но здесь вместо QLabel используется QPushButton в качестве главного виджета и добавляется код, обеспечивающий реакцию программы на действие пользователя (нажатие кнопки).

Исходный код этого приложения находится на компакт-диске в файле /examples/chap01/quit/quit.cpp. Ниже приводится содержимое этого файла:

01 #include <QAapplication>

02 #include <QPushButton.h>

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

04 {

05 QApplication app(argc, argv);

06 QPushButton *button = new QPushButton("Quit");

07 QObject::connect(button, SIGNAL(clicked()),

08 &app, SL0T(quit()));

09 button->show();

10 return app.exec();

11 }

Виджеты Qt генерируют сигналы в ответ на выполнение пользователем какого-то действия или изменение состояния. Например, QPushButton генерируют сигнал clicked() при нажатии пользователем кнопки. Сигнал может быть связан с функцией (называемой слотом в данном контексте) для автоматического ее выполнения при получении данного сигнала. В нашем примере мы связываем сигнал кнопки clicked() со слотом quit() объекта приложения QApplication. Макросы SIGNAL() и SLOT() являются частью синтаксиса; более подробно они объясняются в следующей главе.