Qt Quick の ListView は、リスト ビューをすばやく表示できる非常に便利なコンポーネントであり、C++ データ モデルも Qt フレームワークの重要な部分です。この記事では、Q...

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

おすすめ

転載: blog.csdn.net/update7/article/details/130097238