Сегодня очередная статья по программированию, и первый перевод нового
члена команды: Андрей Киселева. Поздравим его с почином и скажем ему:
"Спасибо, Андрей!" :-)))
Как всегда, жду вопросов и замечаний по адресу suralis-s@mtu-net.ru.
Если не лень, то сразу пишите, можно ли использовать Ваши письма в рассылке.
Сергей Скороходов
Программирование GUI в C++ с использованием библиотеки Qt, часть 1
В безбрежном океане библиотек для разработки GUI особняком стоит библиотека, известная под
названием 'Qt' для C++, разработанная компанией Trolltech AS.
'Qt' была представлена в 1996 году, с тех пор, с помощью этой библиотеки
было создано большое количество разнообразных приложений с графическим
пользовательским интерфейсом.
Qt является кроссплатформенной, есть реализации библиотеки для MS/Windows, Unix/X11
(Linux, Sun Solaris, HP-UX, Digital Unix, IBM AIX, SGI IRIX и пр.), Macintosh ( Mac OS X ) и
Embedded платформ.
Библиотека является объектно-ориентированной, базирующейся на компонентах и имеет богатое разнообразие
различных визуальных элементов - виджетов (widgets), предоставляемых в распоряжение программиста.
'Qt' распространяется в двух ипостасях - коммерческая реализация (имеются 'Qt Professional' и 'Qt Enterprise Editions' версии)
и некоммерческая реализация, доступная для свободного скачивания
www.trolltech.com).
Начало
Прежде всего вам нужно скачать библиотеку, я полагаю, что вы уже скачали версию Qt/X11 для Linux, поскольку
примеры были написаны исходя из этого.
Теперь вам потребуются права суперпользователя для установки библиотеки,
так что залогируйтесь пользователем 'root'.
Теперь разархивируем библиотеку в каталог /usr/local
[root@Linux local]# tar -zxvf qt-x11-free-3.0.1
[root@Linux local]# cd qt-x11-free-3.0.1
Теперь нужно скомпилировать библиотеку с набором опций, необходимых для ее использования и
установить. Библиотека 'Qt' может компилироваться с целым набором различных опций.
Сейчас же мы будем собирать библиотеку с включенной поддержкой
gif reading, threading , STL, remote control, Xinerama, XftFreeType (anti-aliased шрифты) и X Session
Management, не считая базовых характеристик.
Прежде чем продолжить, не забудьте установить некоторые переменные окружения, как показано ниже:
Если все прошло успешно, то установку библиотеки 'Qt' можно считать завершенной.
Первые шаги
Перед тем как начать писать программы на C++, использующие библиотеку 'Qt' , вам необходимо знать о
существовании дополнительного инструментария, поставляемого вместе с библиотекой,
который предназначен для облегчения вашего труда
Qmake
Qmake -- генератор файлов Makefile на основе информации, содержащейся в файле
проекта -- '.pro'.
Где, 'SOURCES' указывает на файл с исходным текстом программы. Если в вашем проекте несколько
таких файлов, то вы можете перечислить их так:
SOURCES = hello.cpp newone.cpp
или так:
SOURCES += hello.cpp
SOURCES += newone.cpp
Аналогично, 'HEADERS' содержит имена заголовочных файлов.
'CONFIG' содержит информацию о конфигурации приложения
Файл проекта должен иметь то же имя, что и исполняемый файл приложения, в нашем случае это
'hello.pro'.
Qt Designer - это инструмент для визуального проектирования пользовательских интерфейсов.
Разработка интерфейса проходит в режиме WYSIWYG, что очень удобно для экспериментирования
с различными визуальными элементами.
Designer генерирует чистый C++ код графического интерфейса.
Вы сможете узнать больше о 'Qt Designer' в следующих статьях.
Hello World!
Давайте начнем. Напишем нашу первую программу 'Hello World'.
С помощью любого текстового редактора наберите следующий код:
Теперь можно попробовать запустить наше первое 'Qt' приложение командой:
[root@Linux mydirectory]# ./hello
На экране должно появиться нечто подобное: (здесь -- картинка типичного окна
KDE с большой кнопкой:)
Теперь разберем каждую строку нашего кода.
Первые две строки подключают заголовочные файлы, содержащие определения клавссов QApplication и QPushButton.
Запомните, что в приложении должен быть только один экземпляр класса QApplication.
Как и в других C++ программах, функция main() является точкой входа в программу.
argc - количество аргументов командной строки, argv - массив аргументов командной строки.
В следующей строке эти аргументы передаются Qt:
QApplication a(argc, argv)
После этого создается объект кнопка класса QPushButton и инициализируется конструктором
с двумя аргументами: надпись на кнопке (label) и родительское окно (0 т.е., в данном случае, сама кнопка).
Устанавливается размер кнопки:
hello.resize(100,30);
Qt приложение может по выбору иметь главный виджет, при закрытии которого
завершается исполнение приложения.
Выбор главного виджета производится в следующей строке:
a.setMainWidget( &hello );
Далее, главный виджет делается видимым. Вам потребуется всегда вызывать
show(), чтобы сделать ваш виджет видимым
hello.show();
И наконец - передаем управление Qt.
return a.exec();
Важно запомнить, что функция exec() возвращает управление,
когда приложение завершает свою работу.
Gaurav Taneja
Я работаю техническим консультантом по Linux/Java/XML/C++ в Нью Дели, Индия.
Активно учавствую в проектах open-source на SourceForge.
Люблю длительные поездки, теннис. Не прочь посмотреть кино или сходить к друзьям на вечеринку.
Кроме того, я работаю в своей собственной консалтинговой компании, которая называется
BroadStrike Technologies (http://www.broadstrike.com/).
Команда переводчиков:
Владимир Меренков, Александр Михайлов, Иван Песин, Сергей Скороходов, Александр Саввин, Роман Шумихин, Александр Куприн, Андрей Киселев
Со всеми предложениями, идеями и комментариями обращайтесь к Сергею Скороходову (suralis-s@mtu-net.ru).
Убедительная просьба: указывайте сразу, не возражаете ли Вы против публикации Ваших отзывов в рассылке.