Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч_пос_ГИМн_ИАС_ОЗХК_2011.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.53 Mб
Скачать

Глава 4. Qt4. Создание пользовательского интерфейса.

4.1. Введение в Qt

Сегодня практически невозможно представить себе приложение, не обладающее интерфейсом пользователя (от примитивного до GUI _– Grathical User Interface). Библиотеки для создания пользовательского интерфейса применяются во всех современных операционных системах.

Хотя WinApi – интерфейс программирования приложений – обладает всем необходимым для создания графического интерфейса пользователя. Даже библиотека MFC, призванная облегчить процесс написания программ для ОС Windows, не дает той простоты и легкости в процессе создания программ, как хотелось бы. Но самый большой недостаток, связанный с применением этих библиотек – это платформозависимость.

Платформонезависимая реализация приложений – это будущее программной индустрии. С каждым днем она будет приобретать все более возрастающее значение. Выигрыш от реализации платформонезависимых приложений налицо: значительно сокращается время разработки, так как нет необходимости писать код несколько раз, и, что не менее важно, отпадает необходимость знать специфику каждой из платформ, для которой пишется программа. И, вместе с тем, заметно улучшится и качество приложений, так как оно будет тестироваться на нескольких платформах, а ошибки будут исправляться централизованным путем в одном и том же исходном коде программы.

Библиотека Qt представляет собой набор классов C++ и инструментов разработки программ для Windows, Linux, Mac OS X и встраиваемых систем (Embedded Linux). Исходные тексты библиотеки открыты, но лицензия GPL требует, чтобы программы, которые разрабатываются с использованием Qt, распространялись с открытым исходным кодом.

Qt прекрасно документирована, благодаря чему вы всегда можете почерпнуть любую интересующую вас информация об этой библиотеке, используя программу Qt Assisstant (а также примеры в папках /examples и /demos).

Добро пожаловать в мир Qt!

4.2. Первое знакомство

Давайте начнем с очень простой Qt-программы. Сначала мы разберем каждую строку этой программы, а затем скомпилируем и выполним её (здесь и далее мы будем работать в системе Linux; для изучения процесса установки Qt смотри [10]).

1

2

3

4

5

6

7

8

9

#include<QtGui/QApplication>

#include<QtGui/QLabel>

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

{

QApplication app(argc,argv);

QLabel *lb = new QLabel(QObject::tr("Привет, студент!"));

lb->show();

return app.exec();

}

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

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

В строке 6 создается текстовая метка QLabel, которая выводит на экран наше сообщение. Виджет (widget) – любой визуальный элемент графического интерфейса пользователя. Кнопки, меню, полосы прокрутки и фреймы являются примерами виджетов. Одни виджеты могут содержать в себе другие виджеты. И, кроме того, язык Qt настолько гибок, что любой виджет может быть окном. В данном примере QLabel является окном приложения.

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

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

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

Пусть наша программа имеет имя simple/simple.cpp. Находясь в консольном режиме, войдите в каталог simple и последовательно введите команды.

qmake -project //создание файла проекта, независимого от платформы

qmake simple.pro //создание зависимого от платформы makefile

make //команда построения программы

./simple //выполнение программы

Не удивляйтесь, если вместо приветствия, у вас появилась некая абракадабра. Все это объясняется несоответствием кодировок. Для русификации нужно использовать функции интернационализации приложений Qt, а именно макросы tr() для написания всех строк и класс QTextCodec. Замените исходный код следующим (заодно несколько оживим текст):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

#include<QtGui/QApplication>

#include<QtGui/QLabel>

#include<QTextCodec>

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

{

QApplication app(argc,argv);

QTextCodec *utfcodec = QTextCodec::codecForName("UTF-8");

QTextCodec::setCodecForTr(utfcodec);

QLabel *lb = new QLabel(QObject::tr("<h2><u><font color=blue>Привет</font></u>, студент!</h2>"));

lb->show();

return app.exec();

}

И в результате работы программы увидим:

Ваша первая программа в Qt готова. Поздравляем!