Qt Quick の ListView は、リスト ビューをすばやく表示できる非常に便利なコンポーネントであり、C++ データ モデルも Qt フレームワークの重要な部分です。この記事では、C++ モデル クラスを使用して Qt Quick で ListView のデータ バインディングを実現する方法を紹介します。
まず、QAbstractListModel から継承する必要がある C++ でデータ モデル クラスを作成する必要があります。モデル クラスが MyModel であるとすると、コードは次のようになります。
class MyModel : public QAbstractListModel
{
Q_OBJECT
public:
explicit MyModel(QObject *parent = nullptr);
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
private:
QList<QString> m_dataList;
};
その中で、rowCount 関数はデータの行の総数を返し、data 関数は対応する行と列のデータを返します。
次に、QML で、後で使用するために QML Register Type を使用してデータ モデル クラスを登録する必要があります。コードは以下のように表示されます:
import QtQuick 2.15
import MyModel 1.0 // 引入 C++ 类
ListView {
width: 200
height: 400
model: myModel
}
MyModel {
id: myModel
}
上記のコードで &#x