Q_PROPERTY 使用QList 来进行数据传递

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

一、QList 基础

        1、创建QList 对象。

QList  testList;   //创建一个空的QList 对象
QList  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

        6、其他使用

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

二、Q_PROPERTY 中使用QList

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

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

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

signals:
    void numbersChanged();

private:
    QList m_numbers;
};

三、Q_PROPERTY 中使用QList 完整示例

1、在main函数中向QML注册

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

2、在QML中使用

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

你可能感兴趣的:(闲记,qt,c++)