Создание графических интерфейсов пользователя с использованием Qt 5.12 (1245345), страница 4
Текст из файла (страница 4)
При щелчке мышкой по кнопке Close или Выход приложение завершаетработу.Примечание. В процессе работы приложению Qt необходимы несколько динамических библиотек, которые должны быть доступны в путях автовызова, устанавливаемыхсистемной переменной Path, или могут быть скопированы в директорию приложения...\release.1.2.2 Сборка Qt-программ в среде Microsoft Visual StudioВ качестве альтернативы компиляции-сборке приложений Qt в командном режимеможно предложить создание приложений с использованием среды Microsoft Visual Studio2008 и более поздние.
Для этого необходимо скачать и установить на компьютер специальный дистрибутив – Qt-библиотеку для Visual Studio и плагин для среды (см. приложение А).После установки плагина Qt в Visual Studio при создании приложений с использованием пункта меню:Файл\Создать\Проект\Тест\становятся доступны шаблоны приложений Qt: Qt ActiveQt Server, Qt Class Library, QtConsole Application, Qt Designer Custom Widget и Qt Gui Application.На этапе обучения созданию приложений с графическим интерфейсом мы будем использовать заготовку проекта последнего вида.При этом нам предлагается выбрать базовый класс для построения окна: QWidget(простое окно без виджетов), QMainWindow (главное окно с меню) или QDialig (окно диалога).
В зависимости от нашего выбора Мастер создает заготовку Qt-приложения с заготовками следующих файлов:QtGuiApplication1.h – для объявления/описания класса окна;QtGuiApplication1.cpp – для описания методов этого класса;QtGuiApplication1.ui – для проектирования внешнего вида окна в QtDesiner;QtGuiApplication1.qrc – для ресурсов проекта;main.cpp – для заготовки основной программы.Если некоторые из перечисленных файлов вам не нужны, то потом их можно удалить из проекта и с диска.Всю дальнейшую работу по созданию, компиляции, сборке и отладке Qtприложений можно выполнять в среде Visual Studio.Примечание. Открывать Qt-приложения, созданные другими средствами, следует,используя пункт меню:Qt VS Tools\Open Qt Project File (.pro) …1.2.3 Qt Designer.
Быстрая разработка прототипов интерфейсовQt Designer – программа визуального проектирования интерфейса пользователя. Результатом работы этой программы является файл XML-описания формы, имеющий расширение .ui – <Имя формы>.ui (рисунок 1.7).ВидформыQt Designer<Имя формы>.uiXMLописаниеформыUICompilerui_<Имя формы>.hРеализацияконструктораформыsetupUi#include#include<Имя класса>.hОписаниеклассапотомкаQWidget#includeMOCompilermoc_<Имя класса>.cppРеализацияиспользуемыхмеханизмовQt<Имя класса>.cppРеализацияклассапотомкаQWidgetС++ Compiler<Имя программы>.obj<Имя программы>.obj<Имя программы>.obj<Имя программы>.cppОсновнаяпрограммаДвоичныеОсновнаяОсновнаятекстыпрограммапрограммачастейпрограммыКомпоновщик<Имя программы>.exeПриложениеРисунок 1.7 – Схема компиляции-сборки приложения с формами интерфейса, созданными в Qt DesignerФайлы, созданные с использованием Qt Designer в дальнейшем дополнительно обрабатываются специальным компилятором UIC (User Interface Compiler – Компилятор пользовательского интерфейса), который формирует код программы на С++ из его XMLописания.
Результатом компиляции является файл ui_<Имя формы>.h. Этот файл содержит описание метода setupUi, использующего классы Qt и обеспечивающего созданиеразработанной формы.Автоматически созданный файл вместе с описанием класса формы передаются MOCдля реализации необходимых дополнительных функций библиотеки Qt.После этого файлы приложения обрабатываются компилятором и компоновщикомС++. В результате – создается файл приложения.Помимо конструирования внешнего вида окна приложения Qt Designer позволяет: запрограммировать предусмотренные Qt (!) аспекты поведения формы и ее компонентов; связать метки (объекты класса QLabel) с другими виджетами так, что при щелчкемышкой на метке фокус ввода будет передаваться на ассоциированный виджет; определить порядок передачи фокуса ввода виджетам формы при нажатии клавиши Tab.Примечание.
Следует подчеркнуть, что описать поведение виджетов можно лишь в тех случаях, когда в приложении задействованы предусмотренные в классах виджетов сообщения сигналы и реакции на них – слоты. Новые сигналы и слоты можно объявлять при создании потомковклассов виджетов специальными операторами Qt (см. раздел 2.3).Описание всех перечисленных связей виджетов – также на языке XML – добавляетсяв файл формы с расширением .ui.Исполняемый файл Qt Designer designer.exe может быть запущен как из консольногоокна, так и непосредственно из Windows.При запуске на экране появляется главное окно приложения и перед ним диалоговоеокно Новая форма (рисунок 1.8).Рисунок 1.8 – Вид конструктора форм при запуске программыВ диалоговом окне предлагается выбрать шаблон для формы окна.
В качестве такихшаблонов могут использоваться объекты классов QWidget, QDialog и QMainWindow. Затем, уже в Designer выполняют проектирование интерфейса.Выполним визуальное проектирование формы интерфейса приложения Hello, рассмотренного в разделе 1.1.Пример 1.4. Приложение Hello. Создание с использованием программы визуальногопроектирования формы.Создание главного окна приложения.
В качестве основы формы будем использоватьобъект класса QWidget, как в предыдущем примере. Соответственно в ответ на запрос Designer выбираем шаблон (templates) Widget и нажимаем кнопку Create. В результате создается заготовка окна, озаглавленная Form – untitled, где Form – имя объекта класса QWidgetпо умолчанию, untitled (безымянный) – означает, что файл создаваемой формы приложения пока не имеет имени.На эту форму с левой панели Widget box перетаскиваем мышкой два виджета Labelи PushButton (рисунок 1.9).Рисунок 1.9 – Основные панели дизайнера и добавление виджетов на формуПолученную форму сохраняем под именем form.ui. Для этого используется пунктменю Файл\Сохранить как…Далее, используя панели Инспектора объектов и Редактора свойств, выбираем объекты и присваиваем им новые имена, меняя свойство objectName:QWidget:objectName = Form objectName = win;QPushButton: objectName = pushButton bjectName = button.Также с помощью Редактора свойств меняем заголовки виджетов (свойство text):label:text = ʺHello!ʺ;button:text = ʺCloseʺ.Управление расположением и размерами виджетов.
Также как и при создании интерфейса вручную для управления размещением виджетов на форме Qt Designer использует компоновщики. Для добавления компоновщика компонуемые виджеты должны бытьвыделены, что можно сделать, щелкая мышкой по виджетам при нажатой клавиши Ctrl.Добавление компоновщиков и связывание с ними виджетов осуществляется выбором пунктов меню: Форма\Скомпановать по горизотали – компоновать по горизонтали, Форма\Скомпановать по вертикали – компоновать по вертикали, Форма\Скомпоновать по сетке – компоновать по сетке,или нажатием соответствующих кнопок на панели компонентов дизайнера.Обратите внимание, что связывание главного компоновщика с окном происходит,если выбрать горизонтальную или вертикальную компоновку при отсутствии выделенныхвиджетов.Компоновку окна приложения выполняем следующим образом: label и button – компонуем по вертикали; окно приложения (при отсутствии выбранных виджетов) – компонуем по горизонтали.После настройки виджетов и выполнения компоновки получаем готовую форму (рисунок 1.10), окончательный вариант которой не забываем сохранить, используя пункт меню Файл/Сохранить.Рисунок 1.10 – Вид окна дизайнера после компоновки формыСвязывание сигналов и слотов.
Как уже говорилось выше, кроме визуального конструирование вида окон, Qt Designer позволяет связать заранее предусмотренные сигналывиджетов с такой же заранее предусмотренной реакцией других виджетов на эти сигналы.Для этого необходимо переключиться в режим Редактор сигналов/слотов, выбрав пунктменю Правка\Изменение Сигналов/Слотов.Указание виджетов, между сигналом и слотом которых устанавливается связь, выполняется визуально: щелкаем левой клавишей мышки по виджету кнопки и, не отпускаялевой клавиши, переносим указатель мышки на свободное место окна (рисунок 1.11). Выбранные виджеты связываются красной линией, после чего открывается окно Настройкасоединения, в котором выбираем слева сигнал clicked(), а справа слот close().
(Длятого, чтобы справа появились доступные слоты необходимо внизу окна выбрать Показывать сигналы и слоты, унаследованные от QWidget. Для завершения операции необходимонажать на кнопку OK.Рисунок 1.11 – Вид окна при связывании сигнала от кнопки с закрытием окнаПосле закрытия вспомогательного окна установленные связи на форме маркируютсявыбранными сигналом и слотом (рисунок 1.12).Рисунок 1.12 – Маркировка связей «Сигнал – слот» в дизайнереПредварительный просмотр формы. QtDesigner позволяет просмотреть полученнуюформу.
Для этого необходимо выбрать пункт меню Форма\Предпросмотр в.... Далее выбирается стиль предпросмотра. В режиме предварительного просмотра форма выглядит иреагирует на действия пользователя так, как это будет происходить во время работы программы (рисунок 1.13).Рисунок 1.13 – Предварительный просмотр сконструированной формыПолученную и проверенную форму сохраняем еще раз и переходим к созданию собственно приложения.Описание класса окна. Приложение в соответствии со схемой работы Qt Designerдолжно включать класс окна.