- Первая программа на Qt
Первая программа на Qt
Как заведено, в самам начале знакомства нужно поздороваться и, чтобы никого не оставить без внимания, лучше всего обратиться сразу ко всему миру. Давайте для этого напишем короткую программу “Hello World”, результат выполнения показан на рис. 1.1.
Написание подобного рода программ стало уже традицией при знакомстве с новым языком или библиотекой. Хотя подобный пример не в состоянии продемонстрировать весь потенциал и возможности самой библиотеки, он даёт представление о базовых понятиях. Данный пример позволяет оценить объём и сложность процесса реализации программ, использующих эту библиотеку. Кроме того, при помощи примера можно убедиться, что всё необходимое для компиляции и компоновки установлено правильно.
Рис. 1. Окно программы "Hello World"
#include <QtGui>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QLabel lbl("Hello, World !");
lbl.show();
return app.exec();
}
В первой строке листинга 1.1 подключается заголовочный файл QtGui, который представляет собой файл модуля, включающий в себя заголовочные файлы для используемых в нашей программе классов: QApplication и QLabel. Конечно, мы могли бы обойтись и без модуля QtGui, а непосредственно подключить заголовочные файлы для поддержки классов QApplication и QLabel, но при большем количестве классов разных модулей, задействованных в программе, читаемость самой программы заметно бы ухудшилась. Кроме того, подключение модулей даёт возможность ускорить компиляцию самой программы за счёт предварительно откомпилированных заголовочных файлов (Precompiled Headers) в том случае, если ваш компилятор позволяет это делать.
Теперь давайте разберём наш пример. Сначала создаётся объект класса QAplication, котрый осуществляет контроль и управление приложением. Для его создания в конструктор этого класса необходимо передать два аргумента. Первый аргумент представляет собой информацию о количестве аргументов в командной строке, с которой происходит обращение к программе, а второй – это указатель на массив символьных строк, содержащих аргументы, по одному в строке. Любая использующая Qt программа с графических интерфейсом должна создавать только один объект этого класса, и он должен быть создан до использования операций, связанных с пользовательским интерфейсом.
Затем создаётся объект класса QLabel. После создания элементы управления Qt по умолчанию не видимы, и для их отображения необходимо вызывать метод show(). Объект класса Qlabel является основным управляющим элементом приложения, что позволяем завершить работу приложения при закрытии окна элемента. Если вдруг окажется, что в созданном приложении имеется сразу несколько независимых друг от друга элементов управления, то при закрытии окна последнего такого элемента управления завершится и само приложение. Это правильно, иначе приложение оставалось бы в памяти компьютера и использовало бы его ресурсы.
Наконец, в последней строке программы приложение запускается вызовом QApplication::exec(). С его запуском приводится в действие цикл обработки событий, определённый в классе QCoreApplication, являющимся базовым для QApplication. Этот цикл передаёт получаемые от системы события на обработку соответствующим объектам. Он продолжается до тех пор, пока либо не будет вызван статический метод QCoreApplication::exit(), либо не закроется окно последнего элемента управления. По завершению работы приложения метод QApplication::exit() возвращает значение целого типа, содержащее код, информирующий о его завершении.