我可以将基于QStringList的模型从C ++端暴露给QML as explained here
如何从QML端修改基于QStringList的模型(插入新项目,删除它们)?是否可以从QML调用QStringListModel
或QStringList
的某些函数?
答案 0 :(得分:2)
来自Qt文档:
任何QObject派生类型的方法都可以从QML代码中访问 是:
A public method flagged with the Q_INVOKABLE() macro A method that is a public Qt slot
您可以拥有一个派生自QObject
的经理类,并将其公开给QML。然后,您可以在管理器中实现所需的功能,并从QML端访问它:
class StringListManager : public QObject
{
Q_OBJECT
public slots:
void append (QString str)
{
m_list.append(str);
}
private:
QStringList m_list;
};
还应将StringListManager
的实例设置为qml文件的上下文数据:
QQmlEngine engine;
StringListManager manager;
engine.rootContext()->setContextProperty("manager", &manager);
现在您可以从QML端访问manager类的功能:
onClicked: {
manager.append("From QML");
}