<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      clion+msvc+qml demo

      CMake設置-DCMAKE_PREFIX_PATH=C:\Qt\6.6.2\msvc2019_64

      demo工程結構:

      ├───CMakeLists.txt
      └───main.cpp
      └───Main.qml
      └───MyObject.cpp
      └───MyObject.h
      └───MyRectangle.qml
      

      CMakeLists.txt

      cmake_minimum_required(VERSION 3.16)
      
      project(qmltest02 VERSION 0.1 LANGUAGES CXX)
      
      set(CMAKE_CXX_STANDARD_REQUIRED ON)
      
      find_package(Qt6 6.5 REQUIRED COMPONENTS Quick)
      
      qt_standard_project_setup(REQUIRES 6.5)
      
      qt_add_executable(appqmltest02
          main.cpp
          MyObject.cpp
          MyObject.h
      )
      
      qt_add_qml_module(appqmltest02
          URI qmltest02
          VERSION 1.0
          QML_FILES Main.qml
          QML_FILES MyRectangle.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(appqmltest02 PROPERTIES
      #    MACOSX_BUNDLE_GUI_IDENTIFIER com.example.appqmltest02
          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(appqmltest02
          PRIVATE Qt6::Quick
      )
      
      include(GNUInstallDirs)
      install(TARGETS appqmltest02
          BUNDLE DESTINATION .
          LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
          RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
      )
      

      main.cpp

      #include <QGuiApplication>
      #include <QQmlApplicationEngine>
      #include "MyObject.h"
      
      int main(int argc, char *argv[])
      {
          QGuiApplication app(argc, argv);
      
          QQmlApplicationEngine engine;
      
          /* 將自定義 C++ 類型注冊到 QML 中的函數*/
          // 參數: 導入的模塊名(約等于頭文件), 主版本號,次版本號,組件名(約等于類名)
          qmlRegisterType<MyObject>("MyObj", 1, 0, "MyObject");
      
          QObject::connect(
              &engine,
              &QQmlApplicationEngine::objectCreationFailed,
              &app,
              []() { QCoreApplication::exit(-1); },
              Qt::QueuedConnection);
          engine.loadFromModule("qmltest02", "Main");
      
          return app.exec();
      }
      

      Main.qml

      import QtQuick
      import MyObj 1.0
      import QtQuick.Controls
      
      Window {
          width: 640
          height: 480
          visible: true
          title: qsTr("Hello qml")
      
          MyObject {
              // 約等于組件對象名(class變量對象名)
              id: myobj
              str: "hahahah"
              value: 10
      
              // 約等于構造函數
              Component.onCompleted: {
                  console.log(value, str)
              }
          }
      
          // 列布局
          Column {
              // 行布局
              Row {
                  spacing: 2
                  Rectangle {
                      id: r1
                      color: "red"
                      height: 100
                      width: 200
                  }
      
                  MyRectangle {
                      x: r1.width + 20
                  }
      
                  Text {
                      id: text01
                      text: qsTr("text")
                      font.pixelSize: 30
                  }
              }
      
              Button {
                  id: btn1
                  width: 50
                  height: 50
                  text: "btn1"
      
                  // 自定義屬性并賦值
                  property string tx: myobj.str
                  onClicked: {
                      console.log("btn1 被點擊")
                      text01.text = tx + myobj.value
      
                      myobj.func();
                  }
              }
          }
      }
      

      MyRectangle.qml

      import QtQuick
      
      Rectangle {
          id: r2
          property int aa: 1
      
          color: "blue"
          height: 100
          width: 200
      }
      

      MyObject.h

      //
      // Created by Dark on 24-4-28.
      //
      
      #pragma once
      
      #include <QObject>
      
      class MyObject : public QObject
      {
          Q_OBJECT
      
      public:
          explicit MyObject(QObject *parent = nullptr);
      
          int value() const;
          void setValue(int newValue);
      
          QString str() const;
          void setStr(const QString &newStr);
      
          // 聲明Q_INVOKABLE, 可以讓func給qml調用
          Q_INVOKABLE void func();
      
      signals:
          void valueChanged();
      
          void strChanged();
      
      private:
          int m_value;
          QString m_str;
          Q_PROPERTY(int value READ value WRITE setValue NOTIFY valueChanged FINAL)
          Q_PROPERTY(QString str READ str WRITE setStr NOTIFY strChanged FINAL)
      };
      

      MyObject.cpp

      //
      // Created by Dark on 24-4-28.
      //
      
      #include "MyObject.h"
      
      #include <QDebug>
      
      MyObject::MyObject(QObject *parent) : QObject(parent) {
      
      }
      
      int MyObject::value() const
      {
          return m_value;
      }
      
      void MyObject::setValue(int newValue)
      {
          if (m_value == newValue)
              return;
          m_value = newValue;
          emit valueChanged();
      }
      
      QString MyObject::str() const
      {
          return m_str;
      }
      
      void MyObject::setStr(const QString &newStr)
      {
          if (m_str == newStr)
              return;
          m_str = newStr;
          emit strChanged();
      }
      
      void MyObject::func()
      {
          qDebug() << "MyObject::func";
          m_value += 10;
      }
      
      

      編譯后,執行windeployqt把需要的dll拷貝到exe的目錄,運行

      運行結果:

      posted @ 2024-06-15 23:04  DarkH  閱讀(379)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 激情五月日韩中文字幕| 亚洲国产精品日韩在线| 好吊视频一区二区三区在线| 伊人狠狠色j香婷婷综合| 午夜亚洲www湿好爽| 亚洲精品成人久久av| 国产一区二区不卡在线看| 秋霞人妻无码中文字幕| 精品人妻一区二区三区蜜臀 | 天堂资源国产老熟女在线| 日韩av片无码一区二区不卡| 久久国产精品久久精品国产| 成在线人视频免费视频| 一区二区三区无码免费看| 国产精品福利自产拍在线观看| 国产精品久久久久久久久久久久| 国产地址二永久伊甸园| 国产成人理论在线视频观看| 欧美熟妇乱子伦XX视频| 水蜜桃av导航| 亚洲无人区码一二三四区| 中文字幕国产精品综合| 天堂在线www天堂中文在线| 国产AV福利第一精品| 精品无码久久久久国产动漫3d| 女同亚洲精品一区二区三| 国产一二三区在线| 精品人妻一区二区三区四区在线| 和艳妇在厨房好爽在线观看| 国产一卡2卡三卡4卡免费网站| 亚洲V天堂V手机在线| 综合图区亚洲另类偷窥| 国产精品激情av在线播放| 国产精品疯狂输出jk草莓视频| 人妻av无码系列一区二区三区 | 日韩有码中文字幕第一页| av亚洲在线一区二区| 人妻伦理在线一二三区| 日韩亚洲国产激情一区二区| 国产欧美丝袜在线二区| 亚洲第一香蕉视频啪啪爽|