Установка компонентов
Структура проекта
helloworld/
├── CMakeLists.txt
└── src/
├── CMakeLists.txt
├── main.cpp
├── resources.qrc
└── qml/
└── main.qml
Подсказка
Вы можете быстро создать структуру так:
mkdir -p helloworld/src/qml
touch helloworld/CMakeLists.txt
touch helloworld/src/{CMakeLists.txt,main.cpp,resources.qrc}
touch helloworld/src/qml/main.qml
Для конфигурации приложения воспользуемся cmake
Подробнее о cmakeCMakeLists.txt (helloworld/)
Для работы потребуется Qt5; можно воспользоваться системным Qt в Kubuntu 23.10. CMake версии 3.16 и выше.
KDE Frameworks 5 (KF5) — это коллекция библиотек и инструментов, предоставляемых KDE, которые облегчают разработку приложений, используя функциональность и компоненты, специфичные для KDE.
Подробнее о KDE Frameworks 5 (KF5)ECM или Extra CMake Modules представляет собой набор дополнительных модулей для CMake, предоставляемых проектом KDE. Эти модули расширяют стандартный функционал CMake, предоставляя дополнительные макросы и модули для упрощения процесса настройки сборки, особенно для проектов, связанных с KDE и Qt.
Подробнее о ECMcmake_minimum_required(VERSION 3.16)
project(rosa-helloworld VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(KF5_MIN_VERSION "5.89.0")
set(QT_MIN_VERSION "5.15.0")
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DQT_QML_DEBUG ")
find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR} ${CMAKE_SOURCE_DIR}/cmake/modules)
find_package(Qt5 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS
Core
Gui
Quick
QuickControls2
Widgets
QuickCompiler
)
include(FeatureSummary)
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDECompilerSettings NO_POLICY_SCOPE)
include(ECMFindQmlModule)
include(ECMConfiguredInstall)
add_subdirectory(src)
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
CMakeLists.txt (src/)
Здесь создаем исполняемый файл hello-rosa
add_executable(hello-rosa
main.cpp
resources.qrc
)
target_link_libraries(hello-rosa
Qt::Qml
Qt::Gui
Qt::QuickControls2
Qt::Widgets)
target_include_directories(hello-rosa PRIVATE ${CMAKE_BINARY_DIR})
install(TARGETS hello-rosa ${INSTALL_TARGETS_DEFAULT_ARGS})
main.cpp
Библиотека представляет собственный стиль QML — RosaStyle. Чтобы приложение использовало его, необходимо указать в main.cpp файле:
QQuickStyle::setStyle(QStringLiteral("RosaStyle"));
#include
#include
#include
int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
QQuickStyle::setStyle(QStringLiteral("RosaStyle"));
QQmlApplicationEngine engine;
const QUrl url(QStringLiteral("qrc:qml/Main.qml"));
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
engine.load(url);
return app.exec();
}
main.qml
Для подключения компонентов нужно импортировать модуль import RosaControls 1.0. В нем находятся доработанные компоненты, часто применяемые в проектах (подробнее рассмотрим их в "галерее компонентов").
Узнать подробнее о Галерее компонентовДля получения доступа к объектам темы рекомендуется придерживаться следующего объявления: import RosaTheme 1.0 as Rosa. Используя Rosa.Theme, вы можете получить доступ к вспомогательным функциям, шрифтам и цветовой схеме темы (подробнее будет рассмотрено далее).
import QtQuick 2.15
import QtQuick.Controls 2.15
import RosaTheme 1.0 as Rosa
import RosaControls 1.0
ApplicationWindow {
width: 640
height: 480
title: qsTr("Hello World")
Button {
anchors.centerIn: parent
text: qsTr("Hello Rosa")
}
}
resources.qrc
<RCC>
<qresource prefix="/">
<file>qml/Main.qml</file>
</qresource>
</RCC>
Сборка и запуск приложения
mkdir build
cd build
cmake -S .. -B .
make
./bin/hello-rosa

В результате получим форму