Компания ALT Linux
Опубликован: 07.03.2015 | Доступ: свободный | Студентов: 2134 / 486 | Длительность: 24:14:00
Лекция 12:

Структура проекта. Основные типы

Аннотация: Рассматриваются проекты в Qt, их компиляция, работа с текстовыми строками и файлами.

12.1 Файлы проекта

Теперь давайте рассмотрим из чего состоит проект Qt. В общем, проект Qt имеет такую структуру:

  • файл проекта — описывает файлы, которые входят в проект и содержит необходимые настройки;
  • файлы, входящие в проект (или другие подпроекты, если проект разбит на несколько частей).

Ключевую роль имеет файл проекта с расширением .pro. Он содержит списки файлов: исходных кодов, файлов ресурсов, файлов локализации, форм, других файлов, которые входят в проект, а также файлов подпроектов, если проект состоит из нескольких частей. Этот файл также содержит некоторые настройки программы.

Теперь рассмотрим создание своего проектного файла. Создадим новую папку, где будет размещаться проект (например: custom_project). Создайте файл (это будет файл проекта) введите его имя с расширением .pro (например: custom_project.pro). Наш файл пока что пустой, но его уже можно открыть в Qt Creator (воспользуйтесь главным меню: File->Open File or Project...).

Создать пустой проект можно с помощью мастера построения проектов. Для этого надо воспользоваться главным меню File->New File or Project... либо комбинацией клавиш Ctrl+Shift+N. В окне мастера нужно выбрать раздел Other Project (Другой проект) и тип проекта — Empty Qt Project.

После того, как мы открыли проект, Qt Creator предлагает выбрать комплект для его компиляции. В разделе Projects (Проекты) выберем комплект по умолчанию и нажмём Configure Project. В дереве проекта выберем и откроем файл проекта. Теперь настало время исследовать синтаксис проектных файлов Qt.

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

  • тип проекта (приложение, динамическая или статическая библиотека, проект, который состоит из подпроектов);
  • общие настройки проекта;
  • настройки компиляции;
  • путь, где будет размещён исполняемый файл, библиотека или бинарный файл во время процесса компиляции;
  • пути к файлам, библиотекам и другим частям проекта необходимым для компиляции;
  • файлы, входящие в проект;
  • дополнительные действия, которые будут выполняться в процессе компиляции проекта.

Откройте проектный файл и добавьте к нему содержимое. Обратите внимание: символ # можно использовать для обозначения комментариев.

# Указываем тип проекта
TEMPLATE = app # app - Application, прикладная программа
# Используемые модули Qt
QT -= gui # Удаляем из списка модуль gui
# это означает отказ от использования графического интрефейса,
# то есть - консольную программу
CONFIG += console # Конфигурируем создание консольного проекта
# (нужно только для консольных проектов в Windows, в Linux и Mac OS X не выполняет никаких
действий)
CONFIG -= app_bundle # Предотвращает создание Application bundle в Mac OS X
# (нужно только для консольных проектов в Mac OS X)
TARGET = custom_project # Название исполняемого файла

Теперь нам осталось добавить в проект файл с текстом программы. Для этого мы снова можем воспользоваться мастером. В категории Files and Classes (Файлы и классы) выберем раздел C++ и выберем тип файла "C++ Source File" (Файл исходных текстов C++). Поскольку это будет главный файл программы, то дадим ему привычное для этого случая название: main.cpp. Текст программы является обычным:

int main ( int lArg c, char * lArgv [ ] )
{
	return 0;
}

После создания main.cpp, вновь откроем файл проекта и обратим внимание на несколько дополнительных строк:

SOURCES += \
	main.cpp

Переменная SOURCES хранит список .cpp файлов. В табл. 12.1 мы предоставляем список переменных, которые часто участвуют в описании проекта:

Таблица 12.1. Некоторые важные переменные для описания настроек проекта
Переменная Описание Пример
CONFIG Разнообразные настройки конфигурации проекта (например: режим отладки, вывод предупреждений, компиляция динамической библиотеки и т.п.).
CONFIG += dll plugin \
	warn_on release
DEFINES Макроопределения в проекте. Работает так же, как директива препроцессора #define.
DEFINES +=
DEBUG_OUTPUT \
	CUSTOM_DEFINE
DESTDIR Путь к папке, где будет создан исполняемый файл.
DESTDIR = ./bin
INCLUDEPATH Путь к папкам с заголовочными файлами
INCLUDEPATH += ./includes \
	./my_header_files
FORMS Файлы форм Qt Designer.
FORMS += mainwindow.ui
HEADERS Заголовочные файлы программы *.h.
HEADERS += mainwindow.h
LIBS Пути к динамическим библиотекам и статическим библиотекам, которые используются в программе.
LIBS += -L./libs \
	-L./my_libs \
	-lmycustomlib
QT Модули Qt, которые используются в программе.
QT += core gui widgets \
	network sql xml
RESOURCES Файл ресурсов.
RESOURCES = resources.qrc
SOURCES Исходные тексты программы *.cpp.
SOURCES += main.cpp \
	mainwindow.cpp
TARGET Название исполняемого файла или динамической библиотеки.
TARGET = MyFirstProject
TEMPLATE Тип проекта (приложение, библиотека, составленный из подпроектов ...)
TEMPLATE = lib
Сергей Радыгин
Сергей Радыгин

Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке?

Тип приложения - не Qt,

Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.

 

Юрий Герко
Юрий Герко

Кому удалось собрать пример из раздела 13.2 Компоновка (Layouts)? Если создавать проект по изложенному алгоритму, автоматически не создается  файл mainwindow.cpp. Если создавать этот файл вручную и добавлять в проект, сборка не получается - компилятор сообщает об отсутствии класса MainWindow. Как правильно выполнить пример?