«Здравствуй, Qt»

We use cookies. Read the Privacy and Cookie Policy

«Здравствуй, Qt»

Давайте начнем с очень простой Qt—программы. Сначала мы разберем каждую строку этой программы, а затем покажем способы ее компиляции и выполнения.

01 #include <QApplication>

02 #include <QLabel>

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

04 {

05 QApplication app(argc, argv);

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

07 label->show();

08 return app.exec();

09 }

В строках 1 и 2 в программу включаются определения классов QApplication и QLabel. Для каждого Qt—класса имеется заголовочный файл с тем же именем (с учетом регистра), содержащий определение этого класса.

В строке 5 создается объект QApplication для управления всеми ресурсами приложения. Для конструктора QApplication необходимо указывать параметры argc и argv, поскольку Qt сама обрабатывает некоторые из аргументов командной строки.

В строке 7 создается «виджет» текстовая метка QLabel, который выводит на экран сообщение «Hello Qt!» (здравствуй, Qt). По терминологии Qt и Unix виджетом (widget) называется любой визуальный элемент графического интерфейса пользователя. Этот термин происходит от «window gadget» и соответствует элементу управления («control») и контейнеру («container») по терминологии Windows. Кнопки, меню, полосы прокрутки и фреймы являются примерами виджетов. Одни виджеты могут содержать в себе другие виджеты. Например, окно приложения обычно является виджетом, содержащим QMenuBar (панель меню), несколько QToolBar (панель инструментов), QStatusBar (строка состояния) и некоторые другие виджеты. Большинство приложений используют QMainWindow или QDialog в качестве окна приложения, однако Qt настолько гибка, что любой виджет может быть окном. В данном примере QLabel является окном приложения.

Строка 7 делает текстовую метку видимой. Виджеты всегда создаются сначала невидимыми, и поэтому до непосредственного вывода на экран вы можете настроить их и тем самым не допустить мерцания экрана.

Строка 8 обеспечивает передачу управления приложением Qt. В этом месте программа переходит в цикл обработки событий, т.е. в своего рода режим «простоя», ожидая со стороны пользователя таких действий, как щелчок мышки или нажатие клавиши на клавиатуре.

Для простоты мы не делаем вызов оператора delete для объекта QLabel в конце функции main(). Подобная утечка памяти в такой небольшой программе безвредна, поскольку после завершения программы эта память будет возвращена операционной системой.

Рис. 1.1. Вывод приветствия программы Hello в системе Linux

Теперь вы можете проверить работу этой программы на своей машине. Сначала необходимо установить Qt 4.1.1 (или более позднюю версию Qt 4); процесс установки рассмотрен в Приложении А. С этого момента мы будем предполагать, что вы корректно установили библиотеку Qt 4 и ее каталог bin занесен в переменную окружения PATH. (В системе Windows это делается автоматически программой установки Qt.) Вам также потребуется поместить файл hello.cpp с исходным кодом программы Hello в каталог hello. Вы можете набрать файл hello.cpp вручную или взять его с компакт-диска, который входит в состав книги; на компакт-диске этот исходный код находится в файле /examples/chap01/hello/hello.cpp.

Находясь в консольном режиме, войдите в каталог hello и задайте команду:

qmake -project

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

qmake hello.pro

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

Выполните команду make для построения программы [1]. Затем выполняйте программу, задавая команду hello в системе Windows или ./hello в системе Unix и open hello.app в системе Mac OS X. Для завершения программы нажмите кнопку закрытия окна, расположенную в заголовке окна. Если вы используете Windows и установили версию Qt с открытым исходным кодом вместе с компилятором MinGW, вы получите ярлык для окна DOS, в котором переменные среды правильно настроены на Qt. Вызвав это окно, вы можете компилировать в нем Qt—приложения, используя описанныевыше команды qmake и make. Формируемые исполнительные модули помещаются в папку debug или release, например, C:qt-bookhello eleasehello.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.