兩個qml之間通訊 QML與C 通訊例子

2021-10-17 04:53:02 字數 1970 閱讀 8635

myclass.h

#ifndef myclass_h

#define myclass_h

#include

#include

class myclass : public qobject

q_object

//暴露給qml 屬性

q_property(qstring mystring read getstring write setstring notify mystringchanged)

private:

qstring * m_pstring;

public:

explicit myclass(qobject *parent = 0);

q_invokable qstring getstring(); //q_invocable暴露給 qml

q_invokable void setstring(qstring string);

~myclass();

signals:

void mystringchanged(qstring value); //訊號

public slots:

#endif // myclass_hmyclass.cpp

#include "myclass.h"

myclass::myclass(qobject *parent) : qobject(parent)

this->m_pstring=new qstring("預設值");

myclass::~myclass()

delete this->m_pstring;

qstring myclass::getstring()

setstring("xx");

return *(this->m_pstring);

void myclass::setstring(qstring string){

*(this->m_pstring)=string;

emit mystringchanged(string);//傳送訊號

main.cpp

#include

#include

#include

#include

int main(int argc, char *ar**)

//註冊到qml

qmlregistertype("registermytype",1,0,"myclasstype");

engine.load(qurl(qstringliteral("qrc:/main.qml")));

main.qml

import qtquick 2.4

import qtquick.window 2.2

import qtquick.controls 1.2

import qtquick.controls.styles 1.2

import registermytype 1.0 //匯入

window {

visible: true

button{

id:btn1;

height:20;

width:60;

text:"按鈕";

onclicked: {

//qml操作c++

btn1.text=myobj.mystring;

label{

id:label1;

text:"初始值";

anchors.left:btn1.right;

anchors.leftmargin: 12;

//建立物件

myclasstype

id:myobj;

//連線訊號 到qml

connections{

target:myobj;

onmystringchanged:label1.text="改變了值是:"+value; //這裡的value是signal訊號函式裡面的引數

兩個qml之間通訊 高鐵地面公釐波超高速通訊實驗

翻譯 張宇 美克銳科技 dok ltd採用俄羅斯elva 1公司ppc 10g 70 80 ghz公釐波通訊系統在高鐵執行條件下成功測試了列車 地面連線。從通訊實驗車廂的頭部和尾部兩個無線通道的最大聚合吞吐量達到11300 mbps。測試線路從聖彼得堡至赫爾辛基鐵路 在俄羅斯境內的執行時速為 200...

兩個webpart控制項之間進行通訊

imports microsoft.visualbasic public inte ce iselecteddate readonly property selecteddate as date end inte ce 這裡,我們返回乙個唯讀的日期屬性selecteddate.2 再建立乙個日曆控制...

兩個執行緒之間的通訊。。。。。

public class demo01 catch interruptedexception e thread t2 new thread catch interruptedexception e t1.start t2.start class mytask system.out.println 1...