Создание графических интерфейсов пользователя с использованием Qt 5.12 (1245345), страница 3
Текст из файла (страница 3)
Следует иметь в виду, что помимо средств создания национальных интерфейсов в Qt предусмотрены средства разработки интернациональных приложений свыбором языка интерфейса. С этой целью предлагаются специальные утилиты и приложение для составления переводов – Qt Linguist [1].1.2 Особенности компиляции-сборки программ, использующих библиотеку QtПри создании библиотеки Qt разработчики несколько расширили возможности языка С++, добавив к стандартному набору операторов и макросов С++ специальные макросы, которые обеспечивают передачу и обработку сигналов, хранение информации о типевремени выполнения и динамические свойства объектов и т.п.Реализацию механизмов библиотеки Qt, отсутствующих в С++, обеспечивает специализированный препроцессор Qt – Meta-object Compiler – Мета-объектный компилятор(MOC). Этот препроцессор обрабатывает исходный текст программы, подставляя вместоспециальных макросов Qt реализацию заказанных свойств на С++ (рисунок 1.6).Как следует из схемы, MOC обрабатывает только заголовочные файлы, содержащиеописание классов, наследуемых от классов Qt.
В результате работы МОС в описание объявляемых классов включаются вспомогательные методы классов Qt. Реализация этих методов помещается в файл moс_<Имя класса>.cpp, который подключается к проекту посредством автоматически добавляемого #include. Тексты основных методов в файле реализации класса при этом не затрагивается.После выполнения MOC на выходе получается исходный текст программы на «чистом» С++. Окончательная компиляция и сборка программы используемым компиляторомC++ и компоновщиком, доступными в рамках платформы, где осуществляется компиляция-сборка.#include#include<Имя класса>.hОписаниеклассапотомкаQWidget#includeMOCompilermoc_<Имя класса>.cppРеализацияиспользуемыхмеханизмовQt<Имя класса>.cppРеализацияклассапотомкаQWidgetС++ Compiler<Имя программы>.obj<Имя программы>.obj<Имя программы>.obj<Имя программы>.cppОсновнаяпрограммаДвоичныеОсновнаяОсновнаятекстыпрограммапрограммачастейпрограммыКомпоновщик<Имя программы>.exeПриложениеРисунок 1.6 – Схема сборки приложения при наличии в нем макросов Qt1.2.1 Сборка приложений в командном режимеРазработка приложений на многих платформах (таких как Linux, Solaris, HP-UX идр.) часто выполняется без специализированных сред.
При этом программист создаеттекстовые модули программы в простейших текстовых редакторах типа Блокнота, а компиляция, сборка и отладка программ осуществляется командами вызова соответствующихпрограмм: компилятора, компоновщика и (при наличии) отладчика, вводимыми непосредственно в командной строке консоли. С таким режимом работы целесообразно познакомиться и в Windows.Как уже упоминалось выше помимо cpp- и h-файлов с текстом программы для создания приложения необходим файл проекта, который должен содержать сведения окомпиляции и сборке программы. Операции по созданию файла проекта, а также его компиляции-сборки в соответствии с названием раздела выполним в командном (консольном)режиме.Для работы в командном режиме необходимо, чтобы переменные окружения, указывающие местоположение используемых пакетов и тип компилятора, который будет использован при сборке Qt-проектов, были правильно определены.
В Windows для правильного определения переменных окружения следует войти в консольный режим через команду, предусмотренную при установке Qt в меню Пуск операционной системы. Так для64-разряной конфигурации VS 2017 выбираем пункт:Пуск\Qt..\5.12.1\MSVC 2017(64-bit)\Qt5.12.1(MSVC 2017 64-bit).После этого, чтобы облегчить работу в консольном режиме целесообразно вызватьфайловый менеджер Far (или другой, например WinCommander). При этом понадобитсяуказать полный путь к приложению.
Так если менеджер Far установлен в папке ProgramFiles (х86) на диске C, то команда должна выглядеть так:″C:\Program Files (х86)\Far\Far.exe″Примечание. Здесь и далее двойные кавычки при вводе команды необходимы, поскольку имя каталога Program Files (х86) состоит из нескольких слов, разделенных пробелами.Для установки путей к программам среды Visual Studio 2017 следует выполнить командный файл vcvarsall.bat, если среда VS2017 установлена на диск C, то запуск командного файла на выполнение выглядит так:″С:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat″ x86-amd64 .Затем следует объявить текущей ту папку, в которой находятся cpp- и h- файлы программы. Для этого переходим в нее посредством Far или вводим в командную строку команду изменения директории, например:cd С:\Examples\.Далее последовательность действий по компиляции-сборке приложения выглядитследующим образом.1. Создание файла-проекта приложения.
Для создания файла-проекта, включающего файлы текущей (!) директории, используют специальную консольную программу Qt –qmake, которой в качестве опции передается параметр -project:qmake-projectЕсли имя папки, в которой находится программа, Hello, то в результате работыqmake в текущей папке появится файл проекта Hello.pro, со следующим содержимым:TEMPLATE = appTARGET = helloDEPENDPATH += .INCLUDEPATH += .# InputHEADERS += win.hSOURCES += main.cpp# тип исполняемого файла – .exe# имя создаваемого исполняемого файла# дополнительные пути разрешения ссылок – не заданы# дополнительные пути поиска файлов – не заданы# комментарий – исходные файлыwin.cppСодержимое файла-проекта определяет параметры процесса компиляции-сборки исполняемого файла из исходных файлов проекта и может включать переменные, перечисленные в таблице 1.1.Таблица 1.1 – Переменные файла проектаПеременнаяTEMPLATETARGETDESTDIRCONFIGQTОглавлениеШаблон, используемый в проекте. Он определяет, что будет на выходе процесса сборки: приложение, библиотека или подключаемый модуль.Имя результата сборки: приложения, библиотеки или модуля.
По умолчаниюсовпадает с именем каталога.Каталог, в который будет помещен исполняемый или бинарный файл, полученный в результате сборки. По умолчанию зависит от параметра CONFIG:CONFIG=debug – результат помещается в подкаталог debug текущего каталога, CONFIG=release – результат помещается в подкаталог release текущего каталога.Общие параметры настройки проекта, например создать отладочный (debug)или конечный (realease) варианты приложения. По умолчанию создается отладочный вариант приложения.Qt-ориентированные параметры конфигурации, например указывающие наиспользование классов графического интерфейса пользователя (Graphics UserПеременнаяTEMPLATETARGETDESTDIRHEADERSSOURCESFORMSRESOURCESDEF_FILERC_FILEОглавлениеШаблон, используемый в проекте.
Он определяет, что будет на выходе процесса сборки: приложение, библиотека или подключаемый модуль.Имя результата сборки: приложения, библиотеки или модуля. По умолчаниюсовпадает с именем каталога.Каталог, в который будет помещен исполняемый или бинарный файл, полученный в результате сборки. По умолчанию зависит от параметра CONFIG:CONFIG=debug – результат помещается в подкаталог debug текущего каталога, CONFIG=release – результат помещается в подкаталог release текущего каталога.Interface – GUI) или на использование средств OpenGL – OPENGL.Список заголовочных файлов (.h), используемых при сборке проекта.Список файлов с исходным кодом (.cpp), которые используются при сборкепроекта.Список файлов форм, полученных с использованием Qt Designer (.ui).Список файлов ресурсов (.rc), которые включаются в конечный проект (пиктограммы, картинки и т.п.).Файл .def, который линкуется вместе с приложением (только для Windows).Файл ресурса для приложения (только для Windows).В простейших случаях автоматически полученный файл проекта можно использовать при отладке приложения.
Однако если при проектировании интерфейса были использованы макросы Qt, например QOBJECT, то в файл проекта необходимо добавить:QT += gui widgets# используемые средства Qt: графический интерфейсЕсли же необходимо создать итоговый вариант реализации, файл проекта надо отредактировать так:TEMPLATE = app# тип исполняемого файла – .exeTARGET = Hello# имя исполняемого файла – HelloQT += gui widgets# используемые средства Qt: графический интерфейсCONFIG += release# создание итогового варианта реализации# Input# комментарий – исходные файлыHEADERS += win.hSOURCES += main.cpp win.cpp2.
Создание файла управления компиляцией-сборкой. После создания и редактирования файла проекта Hello.pro повторно вызываем процедуру qmake, передавая ей в качестве параметра имя файла проекта:qmake Hello.proТеперь qmake на базе файла проекта формирует файл Makefile, определяющий фактический порядок компиляции-сборки программы, местоположение компилятора и необходимых библиотек.Если все прошло нормально, то в текущей директории появится файл Makefile, дваподкаталога debug и release и несколько вспомогательных файлов.3. Компиляция-сборка приложения. Не меняя текущей директории, вводим командувызова процедуры компиляции-сборки make: nmake – если используется компилятор-компоновщик Microsoft Visual C++; mingw32-make – для вызова компилятора mingw.При этом в обоих случаях надо быть уверенным, что путь к папке bin, содержащейиспользуемую программу, в системе установлен.
При необходимости путь можно добавить к предусмотренным в системе, например так:set PATH=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin;%PATH%Результат сборки программы – приложение Hello.exe и промежуточные файлы процесса компиляции/сборки, которые в зависимости от задания будут добавлены в каталогdebug или release.4. Выполнение программы. Запускаем программу Hello.exe и на экране получаем окно приложения.