Q_PROPERTY 使用QList 来进行数据传递

        在使用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];  //获取元素值

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dreamliweiming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值