QML--将C++的类注册到QML中使用方法一

这里以注册串口类为例,使用的是qmlRegisterType 函数接口,操作步骤如下

① 首先定义好自己的 SerialPort 的class类

class SerialPort : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QString dataString READ dataString 
            WRITE setDataString NOTIFY dataStringChanged)
    Q_PROPERTY(bool openFlag READ openFlag 
            WRITE setOpenFlag NOTIFY openFlagChanged)
 
 
public:
    explicit SerialPort(QObject *parent = nullptr);
    ~SerialPort();
 
    Q_INVOKABLE bool serialConnect(QString port, QString baudrate, 
            QString databits, QString parity, QString stopbits);
 
    Q_INVOKABLE bool serialDisconnect(void);
    Q_INVOKABLE QString serialRead();
    Q_INVOKABLE bool serialWrite(QString sendStr);
    Q_INVOKABLE void clearSerialReceData();
 
 
    const QString &dataString() const;
    void setDataString(const QString &newDataString);
 
    void setNewData();
 
 
    const bool &openFlag() const;
    void setOpenFlag(const bool &newOpenFlag);
    SerialFormatData *serialFormatData;
 
signals:
    void dataStringChanged();
    void openFlagChanged();
    void updatePointValue(double point1Value, 
                    double point2Value, double point3Value);
 
private:
    QSerialPort *m_serial = nullptr;
    QString m_dataString = "";
    QByteArray m_newSerialHexData = QByteArray();
    bool m_openFlag = false;
};

② 在main.cpp中添加如下代码

//将C++中的类注册到QML中 
qmlRegisterType<SerialPort>("an.qt.mySerial", 1, 0, "SerialPort"); 

 ③ 在main.qml中使用

import an.qt.mySerial 1.0       //引入在main.cpp中注册的C++类

④ 在main.qml中进行实例化

SerialPort{
	id: idSerialport
}

⑤ 调用类中的函数及变量

WButton{
	width: 80
	height: 40
 
	borderWidth: 2
	radius: 5
 
	text: !idSerialport.openFlag ? 
			qsTr("打开串口") : qsTr("关闭串口")
	theme.groupName: !idSerialport.openFlag ?
			 "serial-toopen" : "serial-toclose"
 
	Layout.columnSpan: 2
	Layout.alignment: Qt.AlignRight
 
	onClicked: {
		if(!idSerialport.openFlag)
		{
			idSerialport.serialConnect(port.currentText, 
							baudrate.currentText,
					databits.currentText, parity.currentText, 
							stopbits.currentText);
		}
		else
		{
		   idSerialport.serialDisconnect();
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值