diff --git a/CMakeLists.txt b/CMakeLists.txt index 0f42a33..586134e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,44 +2,69 @@ cmake_minimum_required(VERSION 3.16) project(Zenith VERSION 0.1 LANGUAGES CXX) +set(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOMOC ON) +set(CMAKE_AUTORCC ON) + +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) -find_package(Qt6 REQUIRED COMPONENTS Quick) +find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) -qt_standard_project_setup(REQUIRES 6.10) +set(PROJECT_SOURCES + main.cpp + mainwindow.cpp + mainwindow.h + mainwindow.ui +) -# Content of downloaded design from Figma to Qt or similar -if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/importedcontent/CMakeLists.txt") - add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/importedcontent) +if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) + qt_add_executable(Zenith + MANUAL_FINALIZATION + ${PROJECT_SOURCES} + ) +# Define target properties for Android with Qt 6 as: +# set_property(TARGET Zenith APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR +# ${CMAKE_CURRENT_SOURCE_DIR}/android) +# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation +else() + if(ANDROID) + add_library(Zenith SHARED + ${PROJECT_SOURCES} + ) +# Define properties for Android with Qt 5 after find_package() calls as: +# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android") + else() + add_executable(Zenith + ${PROJECT_SOURCES} + ) + endif() endif() -qt_add_executable(appZenith - main.cpp -) - -qt_add_qml_module(appZenith - URI Zenith - QML_FILES - Main.qml -) +target_link_libraries(Zenith PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) # 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(appZenith PROPERTIES -# MACOSX_BUNDLE_GUI_IDENTIFIER com.example.appZenith +if(${QT_VERSION} VERSION_LESS 6.1.0) + set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.Zenith) +endif() +set_target_properties(Zenith PROPERTIES + ${BUNDLE_ID_OPTION} 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(appZenith - PRIVATE Qt6::Quick -) - -install(TARGETS appZenith +include(GNUInstallDirs) +install(TARGETS Zenith BUNDLE DESTINATION . LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) + +if(QT_VERSION_MAJOR EQUAL 6) + qt_finalize_executable(Zenith) +endif() diff --git a/Main.qml b/Main.qml deleted file mode 100644 index 550e3c6..0000000 --- a/Main.qml +++ /dev/null @@ -1,90 +0,0 @@ -import QtQuick -import QtQuick.Layouts -import QtQuick.Controls.Basic - - -ApplicationWindow { - id: window - width: 640 - height: 480 - minimumWidth: 200 - minimumHeight: 250 - visible: true - title: qsTr("Hello World") - property bool lightMode: Application.styleHints.colorScheme === Qt.Light - property color reallyDark: "#1f1f1f" - property color dark: "#262626" - property color reallyLight: "#e7e7e7" - property color light: "#e0e0e0" - - GridLayout { - id: grid - columns: width < 400 ? 1 : 2 - rowSpacing: 0 - columnSpacing: 0 - anchors.fill: parent - - Rectangle { - id: rectangle1 - color: window.lightMode ? window.reallyLight : window.reallyDark - Layout.fillHeight: true - Layout.fillWidth: true - - ColumnLayout { - anchors.fill: parent - Layout.alignment: Qt.AlignHCenter | Qt.AlignTop - - Label { - id: text1 - color: window.lightMode ? window.dark : window.light - font.pixelSize: 120 - fontSizeMode: Text.Fit - text: qsTr("Hello World") - Layout.fillWidth: true - Layout.fillHeight: true - Layout.margins: 16 - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - } - } - } - - Rectangle { - id: rectangle2 - color: window.lightMode ? window.light : window.dark - Layout.fillHeight: true - Layout.fillWidth: true - - ColumnLayout { - anchors.fill: parent - Layout.alignment: Qt.AlignHCenter | Qt.AlignTop - - Button { - id: button1 - text: window.lightMode ? qsTr("\u263D Dark mode") - : qsTr("\u263C Light mode") - Layout.bottomMargin: 16 - Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom - - contentItem: Text { - text: button1.text - color: window.lightMode ? window.light : window.dark - font: button1.font - horizontalAlignment: Text.AlignHCenter - verticalAlignment: Text.AlignVCenter - } - - background: Rectangle { - implicitWidth: 120 - implicitHeight: 36 - radius: 8 - color: window.lightMode ? window.dark : window.light - } - - onClicked: window.lightMode = !window.lightMode - } - } - } - } - -} diff --git a/importedcontent/README.md b/importedcontent/README.md deleted file mode 100644 index c401b73..0000000 --- a/importedcontent/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Downloaded Design from Figma to Qt - -Save the downloaded design from Figma to Qt here, including the CMakeLists.txt. -The main project CMakeLists.txt picks this up automatically. diff --git a/main.cpp b/main.cpp index 372a537..4a90e4d 100644 --- a/main.cpp +++ b/main.cpp @@ -1,18 +1,11 @@ -#include -#include +#include "mainwindow.h" + +#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("Zenith", "Main"); - - return QGuiApplication::exec(); + QApplication a(argc, argv); + MainWindow w; + w.show(); + return QApplication::exec(); } diff --git a/mainwindow.cpp b/mainwindow.cpp new file mode 100644 index 0000000..6395a77 --- /dev/null +++ b/mainwindow.cpp @@ -0,0 +1,14 @@ +#include "mainwindow.h" +#include "./ui_mainwindow.h" + +MainWindow::MainWindow(QWidget *parent) + : QMainWindow(parent) + , ui(new Ui::MainWindow) +{ + ui->setupUi(this); +} + +MainWindow::~MainWindow() +{ + delete ui; +} diff --git a/mainwindow.h b/mainwindow.h new file mode 100644 index 0000000..36f8cff --- /dev/null +++ b/mainwindow.h @@ -0,0 +1,23 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include + +QT_BEGIN_NAMESPACE +namespace Ui { +class MainWindow; +} +QT_END_NAMESPACE + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = nullptr); + ~MainWindow() override; + +private: + Ui::MainWindow *ui; +}; +#endif // MAINWINDOW_H diff --git a/mainwindow.ui b/mainwindow.ui new file mode 100644 index 0000000..c6854ca --- /dev/null +++ b/mainwindow.ui @@ -0,0 +1,31 @@ + + + MainWindow + + + + 0 + 0 + 800 + 600 + + + + MainWindow + + + + + + 0 + 0 + 800 + 23 + + + + + + + +