From ed54d5e54e961fd84557a0e44aab4b2bf2f966b8 Mon Sep 17 00:00:00 2001 From: Bent Witthold Date: Tue, 3 Mar 2026 09:33:03 +0100 Subject: [PATCH] Initial basic QML app. --- CMakeLists.txt | 42 ++++++++++++++++++++++++++++++++++++++++++ Main.qml | 8 ++++++++ main.cpp | 14 ++++++++++++++ 3 files changed, 64 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 Main.qml create mode 100644 main.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..0a60212 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,42 @@ +cmake_minimum_required(VERSION 3.16) + +set(TARGET_APP "GenericQMLApp") +project(${TARGET_APP} VERSION 0.1.0 LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package(Qt6 REQUIRED COMPONENTS Quick) + +qt_standard_project_setup(REQUIRES 6.8) + +qt_add_executable(${TARGET_APP} + main.cpp +) + +qt_add_qml_module(${TARGET_APP} + URI GenericQML + QML_FILES + Main.qml +) + +# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1. +# If you are developing for iOS or macOS you should consider setting an +# explicit, fixed bundle identifier manually though. +set_target_properties(${TARGET_APP} PROPERTIES +# MACOSX_BUNDLE_GUI_IDENTIFIER com.example.${TARGET_APP} + MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} + MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} + MACOSX_BUNDLE TRUE + WIN32_EXECUTABLE TRUE +) + +target_link_libraries(${TARGET_APP} + PRIVATE Qt6::Quick +) + +include(GNUInstallDirs) +install(TARGETS ${TARGET_APP} + BUNDLE DESTINATION . + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +) diff --git a/Main.qml b/Main.qml new file mode 100644 index 0000000..41424f8 --- /dev/null +++ b/Main.qml @@ -0,0 +1,8 @@ +import QtQuick + +Window { + width: 640 + height: 480 + visible: true + title: qsTr("Hello World") +} diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..c26fc57 --- /dev/null +++ b/main.cpp @@ -0,0 +1,14 @@ +#include +#include + +int main(int argc, char* argv[]) { + QGuiApplication app(argc, argv); + + QQmlApplicationEngine engine; + QObject::connect( + &engine, &QQmlApplicationEngine::objectCreationFailed, &app, + []() { QCoreApplication::exit(-1); }, Qt::QueuedConnection); + engine.loadFromModule("GenericQML", "Main"); + + return app.exec(); +}