2017-09-22 2 views
0

Ich habe ein QStringListModel, das funktioniert, aber dann muss ich alle Zeilen davon löschen von QML.So verwenden Sie removeRows mit QStringListModel

Ich würde erwarten, dass removeRowsfunction von Qt Dokumentation so funktioniert, aber ich weiß nicht, wie man es Eigenschaft verwendet.

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

Ich habe versucht, es so zu verwenden:

myModel.removeRows(1, 1) 

Aber ich bin immer thie Fehler:

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

Kann jemand erklären, wie removeRows richtig zu bedienen? Vielen Dank.

Antwort

2

removeRows() kann nicht von QML aufgerufen werden. die Lösung ist, sie zu machen aufrufbaren durch Erstellen einer neuen Klasse und überschreiben diese Methode:

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); 
    } 
}; 

Im folgenden link es ein Beispiel ist.