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