отказался от Qt Quick и перешел на Qt Widgets
This commit is contained in:
+46
-21
@@ -2,44 +2,69 @@ cmake_minimum_required(VERSION 3.16)
|
|||||||
|
|
||||||
project(Zenith VERSION 0.1 LANGUAGES CXX)
|
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)
|
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(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
|
||||||
if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/importedcontent/CMakeLists.txt")
|
qt_add_executable(Zenith
|
||||||
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/importedcontent)
|
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()
|
endif()
|
||||||
|
|
||||||
qt_add_executable(appZenith
|
target_link_libraries(Zenith PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
|
||||||
main.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
qt_add_qml_module(appZenith
|
|
||||||
URI Zenith
|
|
||||||
QML_FILES
|
|
||||||
Main.qml
|
|
||||||
)
|
|
||||||
|
|
||||||
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
|
# 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
|
# If you are developing for iOS or macOS you should consider setting an
|
||||||
# explicit, fixed bundle identifier manually though.
|
# explicit, fixed bundle identifier manually though.
|
||||||
set_target_properties(appZenith PROPERTIES
|
if(${QT_VERSION} VERSION_LESS 6.1.0)
|
||||||
# MACOSX_BUNDLE_GUI_IDENTIFIER com.example.appZenith
|
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_BUNDLE_VERSION ${PROJECT_VERSION}
|
||||||
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
|
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
|
||||||
MACOSX_BUNDLE TRUE
|
MACOSX_BUNDLE TRUE
|
||||||
WIN32_EXECUTABLE TRUE
|
WIN32_EXECUTABLE TRUE
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(appZenith
|
include(GNUInstallDirs)
|
||||||
PRIVATE Qt6::Quick
|
install(TARGETS Zenith
|
||||||
)
|
|
||||||
|
|
||||||
install(TARGETS appZenith
|
|
||||||
BUNDLE DESTINATION .
|
BUNDLE DESTINATION .
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(QT_VERSION_MAJOR EQUAL 6)
|
||||||
|
qt_finalize_executable(Zenith)
|
||||||
|
endif()
|
||||||
|
|||||||
@@ -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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -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.
|
|
||||||
@@ -1,18 +1,11 @@
|
|||||||
#include <QGuiApplication>
|
#include "mainwindow.h"
|
||||||
#include <QQmlApplicationEngine>
|
|
||||||
|
#include <QApplication>
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
QGuiApplication app(argc, argv);
|
QApplication a(argc, argv);
|
||||||
|
MainWindow w;
|
||||||
QQmlApplicationEngine engine;
|
w.show();
|
||||||
QObject::connect(
|
return QApplication::exec();
|
||||||
&engine,
|
|
||||||
&QQmlApplicationEngine::objectCreationFailed,
|
|
||||||
&app,
|
|
||||||
[]() { QCoreApplication::exit(-1); },
|
|
||||||
Qt::QueuedConnection);
|
|
||||||
engine.loadFromModule("Zenith", "Main");
|
|
||||||
|
|
||||||
return QGuiApplication::exec();
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
#ifndef MAINWINDOW_H
|
||||||
|
#define MAINWINDOW_H
|
||||||
|
|
||||||
|
#include <QMainWindow>
|
||||||
|
|
||||||
|
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
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>MainWindow</class>
|
||||||
|
<widget class="QMainWindow" name="MainWindow">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>800</width>
|
||||||
|
<height>600</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>MainWindow</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="centralwidget"/>
|
||||||
|
<widget class="QMenuBar" name="menubar">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>800</width>
|
||||||
|
<height>23</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QStatusBar" name="statusbar"/>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
||||||
Reference in New Issue
Block a user