Журнал LinuxFormat - перейти на главную

LXF104:Qt4

Материал из Linuxformat
Версия от 09:57, 14 апреля 2009; Crazy Rebel (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Программирование в стиле Qt Осваиваем технологии, лежащие в основе нашумевшего KDE4

Перо короля Артура

ЧАСТЬ 3 Qt4 позволяет делать все не только правильно, но и красиво. Андрей Боровский расскажет о двух технологиях, непосредственно причастных к этому визуальному великолепию.

Предыдущие две статьи этого цикла пестрели абстрактными понятиями, так что сегодня мы займемся вещами конкретными и красивыми. До сих пор в наших примерах отсутствовала одна важная вещь, без которой не может обойтись ни одна серьезная программа – главное окно. На сей раз мы создадим его, и для этого заново познакомимся с Qt Designer.

Qt Designer – старый новый друг

Вы наверняка обратили внимание, что в Qt версии 3 Qt Designer выступал в роли своего рода «полу-IDE». Помимо самого визуального редактора, в нем присутствовал генератор проектов и собственный редактор кода, который позволяли, например, редактировать текст методов-слотов. В Qt 4 разработчики решительно пересмотрели функционал Qt Designer, и теперь этот инструмент предназначен исключительно для визуального проектирования. Редактор текста и генератор проектов из нового Qt Designer удалены.


Объясняется это тем, что, по мнению разработчиков, генерация проектов и редактирование текстов программ должны целиком переместиться в IDE, такие, например, как KDevelop или Microsoft Visual Studio, а Qt Designer (который интегрируется c указанными IDE) будет выполнять функцию вспомогательного инструмента. Впрочем, версия KDevelop, поддерживающая Qt Designer 4, есть пока далеко не у всех, а продукт Microsoft нас и вовсе не касается, поэтому мы рассмотрим работу с Qt Designer 4 как с самостоятельным средством. Лично мне в новом дизайнере не понравилось то, что он представляет собой набор независимых друг от друга окон (наподобие Glade). Возможно, такая структура упрощает встраивание Qt Designer в другие программные среды, но при работе с самим дизайнером постоянно переключаться между окнами не очень удобно.

При запуске Qt Designer 4 нас встречает диалог выбора заготовки для формы, которую мы будем редактировать. Можно создать новую форму или открыть уже существующую. В списке заготовок форм всего четыре пункта, из которых нас интересует Main Window (рис. 1).

Само главное окно Qt-приложения (класс QMainWindow) также претерпело немало изменений. Теперь панели инструментов (объекты класса QToolBar) и стыкуемые окна (объекты класса QDockWidget) реализованы независимо друг от друга. Принципы работы с главным меню тоже несколько изменились (мы рассмотрим все это ниже). Пока что выберем в приветственном окне Qt Designer форму главного окна и щелкнем кнопку Create. Появится форма с заготовкой меню и строки состояния. Мы добавим в нее компонент QFrame, сделаем так, чтобы соответствующий объект заполнял всю форму (команда Lay Out Vertically контекстного меню), и сохраним форму в файле mainform.ui.

Для нашей первой программы с полноценным главным окном нам, разумеется, понадобится и функция main(). Вот она:

 #include <QApplication>
 #include <QMainWindow>
 #include “ui_mainform.h”
 int main(int argc, char *argv[])
 {
            QApplication app(argc, argv);
            Ui::MainWindow mainWindow;
            QMainWindow * window = new QMainWindow;
            mainWindow.setupUi(window);
            window->show();
            return app.exec();
 }

Эта простенькая функция демонстрирует много не очень заметных, но существенных отличий Qt 4 от Qt 3.

Начнем разбирать ее с заголовочных файлов. Включение QApplication и QMainWindow не должно вызывать вопросов, а вот откуда взялся ui_mainform.h? Этот файл должен описывать форму, созданную нами в визуальном редакторе, на языке C++. Иначе говоря, файл ui_mainform.h генерируется на основе данных, содержащихся в файле mainform.ui, но каким образом?

Персональные инструменты
купить
подписаться
Яндекс.Метрика