2012-10-15 51 views
1

我有一个Qml文本输入作为元素之一的列表视图。我用C++模型来扩充列表视图。现在我想更改C++模型,如果用户在qml的文本输入中输入任何值。如何从QML更改C++模型?

我该怎么做?

+0

“模型”,你的意思是'QAbstractItemModel'?我问,因为在某些情况下,您可以为QML执行C++模型非常简单。 – leemes

+0

是的,我从QAbstractItemModel派生了模型类... – Sandy

回答

2

您必须要么在您的模型类创建插槽并调用它:

public slots: 
    setDataInModel(const int index, const QVariant &value); 

,并从该元素的QML代表调用它时,它已经被编辑过这样的:

​​

您也可以创建Q_INVOKABLE方法,并以相同的方式从QML调用它们。

+0

我在QAbstractItemModel中看到了一个方法setItemData(const QModelIndex&index,&const QMap Sandy

+0

不幸的是,这个方法不是从QML自动调用的,你必须编写槽或Q_INVOKABLE方法并自己调用它们。 – JuliusG

+0

确定....感谢您的帮助...... :) – Sandy