一.文件系統模型(QFileSystemModel)
1.定義
QFileSystemModel
?是 Qt 框架中的一個類,它提供了一個用于管理文件系統結構的模型。它可以用于顯示文件系統的目錄結構,以及在視圖中顯示文件和文件夾的詳細信息。這個模型將文件系統表示為一個樹形結構,其中根節點代表文件系統的根目錄。它可以方便地與?
QTreeView
?或?QListView
?等視圖部件一起使用,從而在 GUI 應用程序中顯示文件和文件夾。QFileSystemModel
?還具有內置的排序和篩選功能,以便根據特定的規則顯示文件和文件夾。
?2.常用方法
QFileSystemModel
?類提供了許多功能方法用于管理文件系統的結構和文件/文件夾的信息。以下是一些常用的方法:
setRootPath(const QString &path)
:設置根路徑,指定文件系統模型應該從哪個路徑開始顯示文件和文件夾。
index(int row, int column, const QModelIndex &parent = QModelIndex())
:返回給定行和列的模型索引,可以用來訪問特定位置的文件或文件夾。
data(const QModelIndex &index, int role = Qt::DisplayRole)
:返回指定索引處的數據,根據給定的?role
?返回不同類型的數據,比如文件名、文件大小等。
fileName(const QModelIndex &index)
,?filePath(const QModelIndex &index)
,?fileInfo(const QModelIndex &index)
:分別返回指定索引處的文件名、文件路徑和文件信息(例如文件大小、修改時間等)。
rowCount(const QModelIndex &parent = QModelIndex())
:返回指定父索引下的行數,用于確定文件夾內文件/文件夾的數量。
columnCount(const QModelIndex &parent = QModelIndex())
:返回列數,用于確定顯示的列數。
flags(const QModelIndex &index)
:返回指定索引處的項支持的操作,比如是否可編輯、是否可選擇等。
canFetchMore(const QModelIndex &parent)
:檢查是否可以加載更多的數據。
hasChildren(const QModelIndex &parent = QModelIndex())
:檢查指定索引是否有子項。這些方法使得?
QFileSystemModel
?可以方便地管理文件系統的結構,并提供了訪問文件和文件夾信息的功能。通過這些方法,可以輕松地在 GUI 應用程序中顯示文件系統內容,并對其進行操作。
3.示例?
#include <QApplication>
#include <QFileSystemModel>
#include <QTreeView>int main(int argc, char *argv[])
{QApplication app(argc, argv);QFileSystemModel model;model.setRootPath(QDir::currentPath());QTreeView treeView;treeView.setModel(&model);treeView.setRootIndex(model.index(QDir::currentPath()));treeView.show();return app.exec();
}
4.TreeView介紹
1.首先,創建一個?
QFileSystemModel
?對象并設置根路徑:
QFileSystemModel model;
model.setRootPath(QDir::currentPath());
2.創建一個?
QTreeView
?對象并將?QFileSystemModel
?設置為其模型:
QTreeView treeView;
treeView.setModel(&model);
3.設置?
QTreeView
?的根索引為根路徑的索引,以顯示文件系統的結構:
treeView.setRootIndex(model.index(QDir::currentPath()));
5.ListView介紹
1.類似地,創建一個?
QFileSystemModel
?對象并設置根路徑:
QFileSystemModel model;
model.setRootPath(QDir::currentPath());
?2.創建一個?
QListView
?對象并將?QFileSystemModel
?設置為其模型:
QListView listView;
listView.setModel(&model);
?3.設置?
QListView
?的顯示模式為列表模式:
listView.setViewMode(QListView::ListMode);
?二.字符串鏈表模型(QStringListModel)
1.定義
QStringListModel
?是 Qt 框架提供的一個方便的模型類,用于在 Qt 應用程序中存儲和展示字符串數據。它是?QAbstractListModel
?的子類,可以用于在 Qt 的部件中顯示字符串列表,例如?QListView
、QComboBox
、QTableView
?等。
2.創建和初始化 QStringListModel?
1.首先,創建一個?
QStringListModel
?對象并初始化一個字符串列表:
QStringList stringList;
stringList << "Apple" << "Banana" << "Cherry" << "Durian";QStringListModel model(stringList);
2.可以直接在構造函數中傳入字符串列表,也可以在創建后使用?
setStringList()
?方法設置字符串列表:
model.setStringList(stringList);
?3.在部件中展示 QStringListModel 中的數據
1.創建一個?
QListView
?部件,并將?QStringListModel
?設置為其模型:
QListView listView;
listView.setModel(&model);
?
2.如果需要在?
QComboBox
?中顯示字符串列表,也可以使用?QStringListModel
:
QComboBox comboBox;
comboBox.setModel(&model);
4.示例
#include <QApplication>
#include <QListView>
#include <QStringListModel>int main(int argc, char *argv[]) {QApplication app(argc, argv);QStringList stringList;stringList << "Apple" << "Banana" << "Cherry" << "Durian";QStringListModel model(stringList);QListView listView;listView.setModel(&model);listView.show();return app.exec();
}