日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt 模型视图编程的简单实例

發(fā)布時間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt 模型视图编程的简单实例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

導言:
當遇到一個相對復雜的項目軟件的時候,處理的數(shù)據(jù)量相對較大,這時候從軟件設計的角度,一般都會考慮運用模型視圖的架構。

Qt關于MVC編程組成部分:

大體上,模型、視圖架構中眾多類可以分為3組:模型、視圖和委托。它們之間使用信號和槽來實現(xiàn)通信。

1 模型

所有的模型都基于QAbstractItemModel為數(shù)據(jù)提供了一個十分靈活的接口來處理各種視圖,這些視圖可以將數(shù)據(jù)表現(xiàn)為表格(table)、列表(list)和樹(tree)等形式。

QAbstractListModel 和QAbstractTableModel類,提供了一些常見的功能。

Qt提供了一些現(xiàn)成的模型來處理數(shù)據(jù)項:

QStringListModel 用來存儲簡單的QString項目列表;

QStandardItemModel管理復雜的樹形結構數(shù)據(jù)項,每一個數(shù)據(jù)項可以包含任意的數(shù)據(jù);

QFileSystemModel提供了本地文件系統(tǒng)和目錄的信息;

QSqlQueryModel、QSqlTableModel和QSqlRelationalTableModel用來訪問數(shù)據(jù)庫。

如果Qt提供的這些標準的模型無法滿足需要,還可以子類QAbstractItemModel、QAbstractListModel 或者QAbstractTableModel來創(chuàng)建自定義的模型。

2 視圖

Qt 提供了幾種不同類型的視圖,

  • QListView將數(shù)據(jù)項顯示為一個列表;

    QTableView將模型中的數(shù)據(jù)顯示在一個表格中;

    QTreeView將模型的數(shù)據(jù)項顯示在 具有層次的列表中。

以上這些類都是基于QAbstractItemView抽象基類的。

3委托

默認的委托實現(xiàn)由QStyledItemDelegate類提供。

一個簡單的例子:使用樹形和列表兩種視圖來顯示同一個模型的數(shù)據(jù)

#include <QApplication> #include <QFileSystemModel> #include <QTreeView> #include <QListView>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 創(chuàng)建文件系統(tǒng)模型QFileSystemModel model;// 指定要監(jiān)視的目錄model.setRootPath(QDir::currentPath());// 創(chuàng)建樹型視圖QTreeView tree;// 為視圖指定模型tree.setModel(&model);// 指定根索引tree.setRootIndex(model.index(QDir::currentPath()));// 創(chuàng)建列表視圖QListView list;list.setModel(&model);list.setRootIndex(model.index(QDir::currentPath()));tree.show();list.show();return app.exec(); }

輸出:

ps:
有關編程的學習,編程的理論框架必須要建立起來,同時需要一定量的實例,這樣才能融會貫通。

總結

以上是生活随笔為你收集整理的Qt 模型视图编程的简单实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。