QML访问C++自定义类成员变量
1.创建自定义QObject类MyObject,定义私有成员变量
private:
int m_iValue;
QString m_sString;
2.光标置于成员变量上按Alt+Enter键,在.cpp文件中实现相关功能
int MyObject::iValue() const
{
return m_iValue;
}
void MyObject::setIValue(int newIValue)
{
if (m_iValue == newIValue)
return;
m_iValue = newIValue;
emit iValueChanged();
}
Q_PROPERTY(int iValue READ iValue WRITE setIValue NOTIFY iValueChanged)
3.在自定义类MyObject头文件中声明该类可被QML引用
#include <QtQml>
class MyObject : public QObject
{
Q_OBJECT
QML_ELEMENT
4.在main.cpp中包含myobject.h头文件, 在 QML 系统中注册名为 MyObject 的 C++ 类型 ,并在QML中引用
qmlRegisterType<MyObject>("MyObj",1,0,"MyObject");
//main.qml
import MyObj 1.0
5.QML访问MyObject 成员变量
//main.qml
import QtQuick
import QtQuick.Window 2.15
import MyObj 1.0
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
MyObject{
iValue: 10
sString: "zhangsan"
Component.onCompleted: {
console.log(iValue,sString)
}
}
}