QML访问C++自定义类成员变量
1.创建自定义QObject类MyObject,定义私有成员变量
//myobject.h
private:
int m_iValue;
QString m_sString;
2.光标置于成员变量上按Alt+Enter键,在.cpp文件中实现相关功能
//myobject.cpp
int MyObject::iValue() const
{
return m_iValue;
}
void MyObject::setIValue(int newIValue)
{
if (m_iValue == newIValue)
return;
m_iValue = newIValue;
emit iValueChanged();
}
//myobject.h
Q_PROPERTY(int iValue READ iValue WRITE setIValue NOTIFY iValueChanged)
3.在自定义类MyObject头文件中声明该类可被QML引用
//myobject.h
#include //包含QtQml
class MyObject : public QObject
{
Q_OBJECT
//添加宏
QML_ELEMENT
4.在main.cpp中包含myobject.h头文件, 在 QML 系统中注册名为 MyObject 的 C++ 类型 ,并在QML中引用
//main.cpp
qmlRegisterType("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)
}
}
}