درود،
کد شما کمی نا منظم بود، به هر حال پیشنهاد میکنم نیاز خود مشابه این روش پیادهسازی کنید.
#ifndef MYCLASS_HPP
#define MYCLASS_HPP
#include <QObject>
#include <QByteArray>
class MyClass : public QObject
{
Q_OBJECT
Q_PROPERTY(QByteArray arr READ arr WRITE setArr NOTIFY arrChanged)
Q_PROPERTY(quint8 length READ length WRITE setLength NOTIFY lengthChanged)
public:
explicit MyClass(QObject *parent = nullptr);
~MyClass();
public:
const QByteArray arr() const;
quint8 length() const;
signals:
void arrChanged();
void lengthChanged();
public slots:
void setArr(const QByteArray& v);
void setLength(quint8 l);
private:
QByteArray m_arr;
quint8 m_length;
};
#endif // MYCLASS_HPP
#include "myclass.hpp"
#include <QDebug>
MyClass::MyClass(QObject *parent) :
QObject(parent)
{
QByteArray myArr;
myArr.push_back("A");
myArr.push_back("B");
myArr.push_back("C");
myArr.push_back("D");
myArr.push_back("E");
setArr(myArr);
}
MyClass::~MyClass() {
}
const QByteArray MyClass::arr() const {
return m_arr;
}
quint8 MyClass::length() const {
return m_length;
}
void MyClass::setArr(const QByteArray& v) {
if(m_arr.isNull()) {
m_arr = v;
setLength(m_arr.length());
}
emit arrChanged();
}
void MyClass::setLength(quint8 l) {
m_length = l;
}
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15
import com.org.myclass 1.0
Window {
width: 640
height: 480
visible: true
title: qsTr("Hello World")
MyClass{
id: myClass
}
Component.onCompleted : {
print("data : " , myClass.arr)
print("length : " , myClass.length)
}
}