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
}

你可能感兴趣的:(QT,编程)