3

我有一个 QStringListModel 可以正常工作,但是我需要从 QML中删除它的所有行。

我希望 Qt 文档中的 removeRowsfunction 可以这样工作,但我不知道如何使用它的属性。

removeRows(int row, int count, const QModelIndex &parent = QModelIndex())

我试着像这样使用它:

myModel.removeRows(1, 1)

但我得到了错误:

qrc:/Logger.qml:63: TypeError: Property 'removeRows' of object QStringListModel(0x337350) is not a function

有人可以解释如何正确使用 removeRows 吗?谢谢。

4

1 回答 1

4

removeRows()不能从 QML 调用。解决方案是通过创建一个新类并覆盖该方法使其可调用:

class StringListModel: public QStringListModel{
    Q_OBJECT
public:
    Q_INVOKABLE bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()){
        return QStringListModel::removeRows(row, count, parent);
    }
};

在以下链接中有一个示例。

于 2017-09-22T15:25:25.793 回答