Q_PROPERTY 使用QList 来进行数据传递

2023-12-22 12:34:00

????????在使用C++与QML进行数据传递的时候,我们会经常用到Q_PROPERTY。本章主要从QList基础、Q_PROPERTY 中使用QList、Q_PROPERTY 中使用QList 完整示例三个方面来讲述。

一、QList 基础

? ? ? ? 1、创建QList 对象。

QList<int>  testList;   //创建一个空的QList 对象
QList<int>  testList = {1,2,3}; //创建一个包含初始值得QList对象

? ? ? ? 2、添加和删除元素

testList.append(5);  //在列表末尾添加元素
testList.prepend(6); // 在列表开头添加元素
testList.insert(2,5); //在索引2 处插入元素5
testList.removeAt(1);  //删除索引为1的元素

? ? ? ? 3、访问和修改元素

int value = testList.at(1); //获取索引值为1的元素
int value = testList[1];   //通过下标访问元素
testList[1] = 5;  //修改元素

? ? ? ? 4、获取列表信息

int size = testList.size(); //获取列表的大小
bool isEmpty = testList.isEmpty(); //判断列表是否为空

? ? ? ? 5、遍历列表

for(int i=0; i<testList.size();i++)
{
    int value = testList[i];
    //对元素进行操作
}

foreach(int value testList)
{
    //对元素进行操作
}

? ? ? ? 6、其他使用

testList.clear(); //清空列表
testList.sort(); //对列表进行排序

二、Q_PROPERTY 中使用QList

class MyClass : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QList<int> numbers READ numbers WRITE setNumbers NOTIFY numbersChanged)

public:
    QList<int> numbers() const
    {
        return m_numbers;
    }

    void setNumbers(const QList<int>& numbers)
    {
        if (m_numbers != numbers) {
            m_numbers = numbers;
            emit numbersChanged();
        }
    }

signals:
    void numbersChanged();

private:
    QList<int> m_numbers;
};

三、Q_PROPERTY 中使用QList 完整示例

1、在main函数中向QML注册

MyClass testList = new MyClass();
engine->rootContext()->setContextProperty("testList",testList);

2、在QML中使用

var value = tesList.numbers[0];? //获取元素值

文章来源:https://blog.csdn.net/dreamliweiming/article/details/135147798
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。