小编lir*_*k90的帖子

将对象从c ++发送到qml.那些免费记忆?

有一个继承自QAbstractListModel的模型,我在qml中使用它.此模型的一个属性是参数,它们特定于此模型的元素类型.这是此类参数的一个元素TemperatureParam,DifrentParamType另一个,第三个仍然是...我怎样才能将对象传递给qml并确保在使用后释放内存?下面的代码现在可以正常工作,但在我看来它并不安全.

Param类是如此微不足道:

class QuickTemperatureParam : public QObject
{
    Q_OBJECT
    Q_PROPERTY(float param1 READ param1 WRITE setParam1)
//...
};
Run Code Online (Sandbox Code Playgroud)

模型类(这是我要问的):

class SectionsModel : public QAbstractListModel
{
//...
QVariant data(const QModelIndex &idx, int role = Qt::DisplayRole) const override
{
//...
    int type = getType( idx );
    if (type == 1)
    {
        auto p = new QuickTemperatureParam( idx );
        p->deleteLater(); // This is all right or no?
        return qVariantFromValue(p);
    }
    else if (type == 2)
    //...
}
};
Run Code Online (Sandbox Code Playgroud)

QML是这样的:

ListView {
    model: …
Run Code Online (Sandbox Code Playgroud)

c++ qt memory-leaks qml

2
推荐指数
1
解决办法
883
查看次数

标签 统计

c++ ×1

memory-leaks ×1

qml ×1

qt ×1