对从c++中向qml中导入list<qobject*>的操作的深入学习

在qml中对数组Array可以进行push [index] .length clear;等操作
而从c++中向qml中导入list

//这里是实例化一个QQmlListProperty,分别使用这四个函数指针
QQmlListProperty<Person> BirthdayParty::guests()
{
    return QQmlListProperty<Person>(this, this,
             &BirthdayParty::appendGuest,
             &BirthdayParty::guestCount,
             &BirthdayParty::guest,
             &BirthdayParty::clearGuests);
//    return QQmlListProperty<Person>(this, m_guests);
}

//这是最终执行的函数
void BirthdayParty::appendGuest(Person* p) {
    qDebug() << "appendGuest1";
    m_guests.append(p);
}
int BirthdayParty::guestCount() const
{
    return m_guests.count();
}
Person *BirthdayParty::guest(int index) const
{
    return m_guests.at(index);
}
void BirthdayParty::clearGuests() {
    qDebug() << "lll";
    while(m_guests.size() > 0)
    {
        m_guests.takeFirst()->destroyed();
    }
//    return m_guests.clear();
}

// ![0]

//这三个函数是在qml中分别操作"push" "=[]"  "[index]"  ".length"时使用的
void BirthdayParty::appendGuest(QQmlListProperty<Person>* list, Person* p) {
    qDebug() << "appendGuest2";
    reinterpret_cast< BirthdayParty* >(list->data)->appendGuest(p);
}

void BirthdayParty::clearGuests(QQmlListProperty<Person>* list) {
    qDebug() << "clearGuests";
    reinterpret_cast< BirthdayParty* >(list->data)->clearGuests();
}

Person* BirthdayParty::guest(QQmlListProperty<Person>* list, int i) {
    qDebug() << "guest";
    return reinterpret_cast< BirthdayParty* >(list->data)->guest(i);
}

int BirthdayParty::guestCount(QQmlListProperty<Person>* list) {
    qDebug() << "guestCount";
    return reinterpret_cast< BirthdayParty* >(list->data)->guestCount();
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值