1. 程式人生 > >qml與C++互動傳值的簡單demo

qml與C++互動傳值的簡單demo

qml 與C++的後臺互動,參照foruok大神的寫法自己研究,改動了一下,有不足 的地方還望路過的大神指出,

我用的是Qt5.7.1,做了個簡單的demo,下面是我的程式碼原始碼

具體的操作過程如下:

新建選擇Application專案 中的Qt Quick Controls 2 Application ,選擇下一步,命名為QmlTest後面一直點下一步就行了。

選擇專案右鍵選擇新增新檔案,C++     C++ Class 下一步,命名為QmlTest,baseClass選擇QObject點選下一步就OK了。

main.cpp的原始碼

#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QtQml>
#include "qmltest.h"

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QGuiApplication app(argc, argv);
    qmlRegisterType<QmlTest>("an.Qt.QmlTest",1,0,"QmlTest");

    QQmlApplicationEngine engine;
    engine.load(QUrl(QLatin1String("qrc:/main.qml")));
    return app.exec();
}

注意上面的   qmlRegisterType<QmlTest>("an.Qt.QmlTest",1,0,"QmlTest");的位置不能放錯否則會沒有作用。

qmltest.h的原始碼

#ifndef QMLTEST_H
#define QMLTEST_H

#include <QObject>


class QmlTest : public QObject
{
    Q_OBJECT

public:
    explicit QmlTest(QObject *parent = 0);
    ~QmlTest();

signals:
    void currentDemo(const QString &strDemo);

public slots:
    void send();
};

#endif // QMLTEST_H

qmltest.cpp的原始碼

#include "qmltest.h"

QmlTest::QmlTest(QObject *parent)
{
}

QmlTest::~QmlTest()
{
}

void QmlTest::send()
{
    emit currentDemo(("demo"));
}

main.qml的原始碼

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
import an.Qt.QmlTest 1.0

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")
    Text {
        id: demoLabel;
        anchors.left: parent.left;
        anchors.leftMargin: 4;
        anchors.top: parent.top;
        anchors.topMargin: 4;
        font.pixelSize: 26;
    }
    QmlTest {
        id: demoMaker;
    }
    Button{
        id:send;
        text: "send";
        anchors.left: parent.left;
        anchors.leftMargin: 4;
        anchors.bottom: parent.bottom;
        anchors.bottomMargin: 4;
        onClicked: {
            demoMaker.send();
        }
    }
    Connections {
        target: demoMaker;
        onCurrentDemo:{
            demoLabel.text = strDemo;
        }
    }
}


相關推薦

qmlC++互動簡單demo

qml 與C++的後臺互動,參照foruok大神的寫法自己研究,改動了一下,有不足 的地方還望路過的大神指出, 我用的是Qt5.7.1,做了個簡單的demo,下面是我的程式碼原始碼 具體的操作過程如下: 新建選擇Application專案 中的Qt Quick Contro

QMLC++互動 登陸介面設計

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Webview原生互動

UIWebView *webView = [[UIWebView alloc]initWithFrame:CGRectMake(0,0, MainScreenWidth,MainScreenH

QMLc++互動的一些坑

這個是轉載的,【lvliang2008】, #include <QtGui/QApplication> #include <QtDeclarative/QDeclarativeView> #inc

c++中的訊號QML中的函式繫結(連結)起來 以及qmlc++互動重要筆記

signals: Q_INVOKABLE void buttonLeft();     Q_INVOKABLE void buttonRight();     Q_INVOKABLE void buttonShort();    Q_INVOKABLE void butto

QtQuick系列教程(6)-QmlC++互動

總目錄傳送 本博文技術等級: ★★☆☆☆☆☆☆☆☆ QML 作為一種靈活高效的介面開發語言已經越來越得到業界的認可。QML 負責介面,C++ 負責邏輯,這也是 Qt 官方推薦的開發方式。那麼 QML 與 C++ 的互動必然是需要我們掌握並且精通的。 本 C

ios jsoc原生WKWebView方法注入及互動

    上篇文章中,我們整理了關於WKWebView的詳細使用,包含進度條、獲取web title等等內容,這篇文章我們整理下,專案中,我們可能使用到的oc 與 js 原生互動場景下的使用.如有興趣,

qmlc++之間的互動

學習qml的筆記,Qt Quick核心程式設計的一個例子:1、實現一個類(從object以及派生類中繼承而來),使用Q_OBJECT巨集。 #ifndef COLORMAKER_H #define COLORMAKER_H #include <QObject>

c# 委託類簡單例項

WebForm1 向Class1傳遞引數值: //////////////////////////////////////////////////////////////////////////////////////////////////////////////////

qmlc++物件互動

c++修改、訪問qml屬性、呼叫qml方法(引數傳遞)、qml訊號繫結到c++物件的槽上,傳遞各種型別的引數: main.cpp 設定qml屬性、訪問qml屬性、呼叫qml函式、關聯qml訊號與c++物件的槽函式 #include <QGui

c++11 移動拷貝、移動賦簡單Demo

#include <iostream> using namespace std; class A { public: A() : p_(new int(3)){ cout << "constructor numbers = :

C語言---地址

<1>傳值:實參把值傳給了形參,但沒有傳地址即對實參的修改無效。 核心原理:函式會對形參和中間的臨時變數(函式內定義的變數)重新分配空間。 <2>傳地址:實參把自己的記憶體地址傳給了形參,這樣對實參的修改就有效了。 大多數型別都是傳值, 傳地址有以下3種方式: (1)、全域性變數(把

C#】winform子窗體父窗體,子窗體子窗體

【1】子窗體與父窗體傳值 【2】子窗體與子窗體傳值: 前提:Form1座位父窗體,然後它new出來了兩個個子窗體分別為Form2與Form3; 要求:可以及時把Form2中產生的資料,傳遞給Form

Qt Quick 之 QML C++ 混合編程具體解釋

ack world 避免 pub start 模板方法 另一個 一秒 gis Qt Quick 技術的引入。使得你能夠高速構建 UI ,具有動畫、各種絢麗效果的 UI 都不在話下。但它不是萬能的。也有非常多局限性,原來 Qt 的一些技術,比方低階的網絡編程如 Q

iOS Block界面反向demo

一個 push action put btn inter text nac mic 1、在第二個視圖控制器的.h文件中定義聲明Block屬性: // 定義block @property (nonatomic, copy) void (^NextViewControlle

Android自定義viewactivity的

重復 轉動 自定義 activit 廣播 內部 代碼 view 等待 昨晚在寫團隊項目的時候,遇到一個問題,直到今天早上才解決。。。即在自定義view“轉盤”結束轉動後獲取結果的處理中,我是想吧值傳到activity中的一個textview中的,但我的自定義view類不是a

UnityC++互動入門

Unity多執行緒和Job System Job System作業只能訪問blittable資料型別。當在託管程式碼和原生代碼之間傳遞資料時,該型別資料不需要轉換。 關於blittable資料型別在連結二里有介紹。 Unity與C++互動入門(1) https://www.jianshu.com/p/6

ES6的 結構賦----簡單demo

<script type="text/javascript"> // 解構賦值 {     let [a,b,c] = [1,2,3];     console.log(a,b,c); //1 2 3 } //巢狀

C#訊息

為了做一個東西,研究了下c#獲取其他控制代碼後進行傳值(才發現幾乎是什麼都不懂就開始做了),屬於windows訊息機制,發現了一些問題,整理如下 一個視窗擁有多個子控制元件,控制代碼不同,所能獲取的訊息和處理也不同,以記事本為例:標題欄控制代碼可接收最大化最小化等訊息,而text控制元件可接收按

struts2動態方法呼叫j2ee互動

動態方法呼叫: (action程式碼) package com.zking.web; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ModelDriven; import