qt quick 串口終端程序(qml 與 c++交互實例)

qt quick 串口終端通過c++ 與qml 之間的通信實現串口終端軟件。

qml 實現數據顯示和人機設定界面,需要在c++中實現串口的操作和狀態的更新。

qml中通過把設定界面的是否可見進行設定。可見的時候顯示需要設定的參數 然後點擊apply 按鈕打開串口。

串口的打開需要通過C++ 類中指定了 Q_INVOKABLE 的方法。並在主程序中設定了QtQuick2ApplicationViewer的 rootContextsetContextProperty

程序如下:

    //設定串口對象SerialTest 在qml中可見,名稱爲serialtest
    viewer.rootContext()->setContextProperty("serialtest",new SerialTest);

    //類中方法聲明,可以可以在qml中訪問
    Q_INVOKABLE void openAndSetPort(int PortNameIndex,int BaudRateIndex,int DatabitsIndex,int ParityIndex,int StopbitsIndex,int FlowcontrolIndex);//打開並設定端口;

同時qml中顯示接受到的數據和發送的數據統計,這是訪問C++類的私有成員,需要通過設定Q_PROPERITY 聲明如何訪問。

  Q_PROPERTY(QString receivenumber READ receivenumber WRITE setreceivenumber NOTIFY receivenumberChanged)//接收的數據字節統計

void SerialTest::setreceivenumber(QString receivenumber)//更新接收的數據字節總數
{
    m_receivenumber=receivenumber;
    emit receivenumberChanged();;
}

QString SerialTest::receivenumber()//響應receivenumberChanged()消息
{
    return m_receivenumber;
}

其實qml寫這個數據倒是不用多討論,數據更新到界面的時候其實是發送一個信號,qml 中顯示數據會跟隨着數據的更新動態加載。

Label{
    height: 25
    text: "Number of receive Data: "+serialtest.receivenumber//顯示接收數據計數
    verticalAlignment :Text.AlignVCenter
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章