Примеры проектов на Qt

Пример
Пояснение

Пример использования OpenGL для отрисовки в окне и обработки событий мыши.

Иллюстрация системы сигналов и слотов.

Пример небольшого приложения с графическим пользовательским интерфейсом, описанного кодом.

Пример приложения с различными элементами пользовательского интерфейса.

Пример организации проекта с несколькими конфигурациями

Возьмём следующий пример:

Mode   Name
----   ----
d----- include/         # заголовочные файлы проекта (API или интерфейс проекта)
d----- src/             # исходные файлы проекта
d----- test/            # вспомогательные и исходные файлы с тестами
d----- resources/       # директория с ресурсами
------ qt_project.pro   # файл qmake проекта
------ resources.qrc    # файл ресурсов

Проект лабораторной работы состоит из двух частей: проект и набор тестов. Проект состоит из заголовочных файлов и файлов с исходным кодом, включая main.cpp, содержащий точку входа программы. Unit-тесты для тестирования проекта располагаются в файлах в директории test/, точка входа для запуска тестов располагается в файле tests.cpp.

Если проект не включает в себя unit-тесты, то директория test/ отсутствует.

Описание проекта

В qmake-проекте можно описать несколько конфигураций. Ниже приведёна общая часть для обоих конфигураций: приложения и тестов.

# Template: результат сборки исполняемый файл (app), библиотека или плагин.
TEMPLATE += app

# Configs: определяет конфигурацию проекта и параметры компилятора.
CONFIG += c++latest
CONFIG += strict_c++

# Qt module: модули Qt, которые будут использоваться в проекте.
QT += core

# INCLUDEPATH: директории с заголовочными файлами. Аналог `-I` clang-а.
INCLUDEPATH += \
	include/

# HEADERS: список заголовочных файлов, используемых в проекте.
HEADERS += \
	include/common.h
    
# SOURCES: список файлов с исходным кодом, используемых в проекте.
SOURCES += \
	src/common.cpp
    
# RESOURCES: файл с ресурсами (QtResources).
RESOURCES += \
    resources.qrc

Осталось указать специфичные для наших конфигураций опции и файлы.

solution {
	# Solution - is GUI.
	CONFIG += qt

	# Qt modules.
	QT += widgets gui

	# Solution specific headers/sources.
	HEADERS +=
	SOURCES += \
		src/main.cpp
}
Итоговый файл проекта
TEMPLATE += app

CONFIG += c++latest
CONFIG += strict_c++

QT += core

INCLUDEPATH += \
	include/

HEADERS += \
	include/common.h
    
SOURCES += \
	src/common.cpp

RESOURCES += \
    resources.qrc

solution {
	CONFIG += qt

	QT += widgets gui

	HEADERS +=
	SOURCES += \
		src/main.cpp
}

tests {
	CONFIG += cmdline

	SOURCES += \
		test/tests.cpp

	GTEST_INCLUDE = $$GTEST_ROOT/include
	GTEST_LIBPATH = $$GTEST_ROOT/lib

	INCLUDEPATH += $$GTEST_INCLUDE
	LIBS += -L$$GTEST_LIBPATH -lgtest
}

QtCreator

После описания файла проекта необходимо настроить конфигурации сборки.

Для этого после открытия проекта следует перейти в раздел Projects, выбрать интересующий Kit и для него перейти в Build.

Настроим Debug и Release как solution, начнём с Debug. Сверху в Edit build configuration выбираем Debug. Затем необходимо в Build Steps дополнить первый шаг qmake аргументом про нашу конфигурацию. Справа от qmake: qmake qt_project.pro нажимаем на Details, и в Additional arguments: дописываем CONFIG+=solution:

Для настройки Release конфигурации действия аналогичны, в Edit build configuration выбираем Release.

Настроим Debug и Release как tests, начнём с Debug. В таком случае необходимо создать новые build configuration. Сверху выбираем Add - Debug и задаём уникальное имя для тестовой debug конфигурации.

После создания автоматически произойдёт переключение на созданную конфигурацию. Остаётся лишь указать аргументы для этой конфигурации. В нашем случае:

CONFIG+=tests GTEST_ROOT="<path/to/googletest>"

GTEST_ROOT – переменная, которая используется в нашем примере проекта; содержит путь до корня googletests.

По окончании настройки конфигураций в левом нижнем меню при выборе Kit будут доступны настроенные конфигурации сборки, между которыми можно будет переключаться в 1 клик.

Terminal

Сборка из терминала представляет собой повтор Build Steps из настроек QtCreator.

Конфигурация solution (основное решение).

qmake qt_project.pro CONFIG+=solution

Конфигурация tests (тесты).

qmake qt_project.pro CONFIG+=tests GTEST_ROOT=<path/to/googletest>

Так как GoogleTest будет динамическим, то дополнительно перед запуском.

set PATH=<path/to/googletest>\bin;%PATH%

Сборка с использованием MSVC/cl.

nmake -f Makefile.Debug
REM Debug-сборка

nmake -f Makefile.Release
REM Release-сборка

Запуск.

.\debug\qt_project.exe
REM Debug

.\release\qt_project.exe
REM Release

Last updated