Qt のモデルとビューの入門ガイド

概要

概要: この記事では、Qt の Model と View の基本的な概念、使用方法、応用シナリオを紹介し、初心者向けにわかりやすいガイドを提供します。簡単なコード例を通じて、特定のシナリオでモデルとビューを使用する方法を示します。

  1. 導入

    Qt では、モデル - ビュー アーキテクチャは、データ (モデル) を表示 (ビュー) から分離するために一般的に使用されるデザイン パターンです。この設計パターンにより、コードの保守性と再利用性が向上すると同時に、データとインターフェイス間の対話が簡素化されます。

2. 基本的な考え方

  • モデル: データの保存と管理を担当します。Qt では、Model は通常、QAbstractItemModel またはそのサブクラス (QStandardItemModel など) を継承します。
  • ビュー: モデル内のデータの表示を担当します。Qt では、View は QListView、QTableView、QTreeView などのさまざまなタイプのビューにすることができます。
  • デリゲート: View でのデータの描画とユーザー入力の処理を担当します。Qt では、Delegate は通常、QStyledItemDelegate またはそのサブクラスを継承します。

3. 使用方法

Qt でモデルとビューを使用するには、次の手順を実行する必要があります。

  1. データを保存および管理するためのモデルを作成します。
  2. モデル内のデータを表示するビューを作成します。
  3. モデルをビューのデータ ソースとして設定します。
  4. (オプション) カスタム データを表示および編集するためのデリゲートを作成します。

4. コード例

以下は、Model と View を使用して Qt で文字列のリストを表示する方法を示す簡単なコード例です。

#include <QApplication>
#include <QListView>
#include <QStandardItemModel>

int main(int argc, char *argv[]) {
    
    
    QApplication app(argc, argv);

    // 创建Model
    QStandardItemModel model;

    // 添加数据到Model
    QStringList items{
    
    "Item 1", "Item 2", "Item 3"};
    for (const QString &item : items) {
    
    
        QStandardItem *standardItem = new QStandardItem(item);
        model.appendRow(standardItem);
    }

    // 创建View
    QListView listView;

    // 将Model设置为View的数据源
    listView.setModel(&model);

    // 显示View
    listView.show();

    return app.exec();
}

操作結果:

5. 応用シナリオ

モデル ビュー アーキテクチャは、次のシナリオに適しています。

  • データと表示の分離: データ ストレージと表示を分離したい場合は、モデル ビュー アーキテクチャを使用できます。
  • 保守性: モデル ビュー アーキテクチャでは、データと表示ロジックが分離されているため、コードの保守性が向上します。
  • 再利用性: モデル ビュー アーキテクチャを使用すると、同じデータをさまざまなタイプのビューで簡単に表示したり、さまざまなアプリケーションでモデルを再利用したりできます。

6. 展開する

ファイル ブラウザ アプリケーションを開発する必要があるとします。QFileSystemModel (モデル) と QTreeView (ビュー) を使用して次のことを実現できます。

#include <QApplication>
#include <QTreeView>
#include <QFileSystemModel>

int main(int argc, char *argv[]) {
    
    
    QApplication app(argc, argv);

    // 创建Model
    QFileSystemModel model;
    model.setRootPath(QDir::currentPath());

    // 创建View
    QTreeView treeView;

    // 将Model设置为View的数据源
    treeView.setModel(&model);

    // 设置View的根节点
    treeView.setRootIndex(model.index(QDir::currentPath()));

    // 显示View
    treeView.show();

    return app.exec();
}

要約:

この記事では、基本概念、使用方法、応用シナリオなど、Qt のモデルとビューの入門ガイドを初心者向けに提供します。モデルビュー アーキテクチャを使用すると、よりモジュール化された保守しやすいコードを作成できます。この記事が Qt プログラミングの参考になれば幸いです。

おすすめ

転載: blog.csdn.net/qq_46017342/article/details/132545761