widget load qml

This commit is contained in:
zhangyazhou 2024-01-05 17:26:18 +08:00
parent bd70248537
commit 0cc2f5656a
5 changed files with 55 additions and 15 deletions

View File

@ -9,8 +9,8 @@ set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Quick QuickWidgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Quick QuickWidgets)
set(PROJECT_SOURCES set(PROJECT_SOURCES
main.cpp main.cpp
@ -44,7 +44,7 @@ else()
endif() endif()
endif() endif()
target_link_libraries(QtMd PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) target_link_libraries(QtMd PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Quick Qt${QT_VERSION_MAJOR}::QuickWidgets)
# 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

View File

@ -1,5 +1,43 @@
import QtQuick 2.15 import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Controls.Material 2.15
Item { Rectangle {
anchors.fill: parent
border.color: Material.accent
border.width: 1
Row {
anchors.centerIn: parent
spacing: 10
Button {
id: clickBtn
width: 100
text: "点击我"
flat: false
anchors.verticalCenter: parent.verticalCenter
onClicked: {
countText.text = (parseInt(countText.text) + 1).toString();
console.log("按钮被点击了, text:" + countText.text)
}
}
Rectangle {
width: 100
height: 32
anchors.verticalCenter: parent.verticalCenter
border.width: 1
border.color: Material.accent
Text {
id: countText
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
text: qsTr("0")
}
}
}
} }

View File

@ -1,11 +1,23 @@
#include "mainwindow.h" #include "mainwindow.h"
#include "./ui_mainwindow.h" #include "./ui_mainwindow.h"
#include <QQuickWidget>
#include <QVBoxLayout>
#include <QQuickView>
MainWindow::MainWindow(QWidget *parent) MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent) : QMainWindow(parent)
, ui(new Ui::MainWindow) , ui(new Ui::MainWindow)
{ {
ui->setupUi(this); ui->setupUi(this);
QQuickWidget *quickWidget = new QQuickWidget;
quickWidget->setSource(QUrl::fromLocalFile(":/main.qml"));
quickWidget->setGeometry(ui->centralwidget->geometry());
quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(quickWidget);
ui->centralwidget->setLayout(layout);
} }
MainWindow::~MainWindow() MainWindow::~MainWindow()

View File

@ -3,6 +3,7 @@
#include <QMainWindow> #include <QMainWindow>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
namespace Ui { namespace Ui {
class MainWindow; class MainWindow;

View File

@ -14,17 +14,6 @@
<string>MainWindow</string> <string>MainWindow</string>
</property> </property>
<widget class="QWidget" name="centralwidget"/> <widget class="QWidget" name="centralwidget"/>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>19</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget> </widget>
<resources/> <resources/>
<connections/> <connections/>