QFileSystemModel Class
QFileSystemModel クラスは、ローカルファイルシステム用のデータモデルを提供します。詳細...
| ヘッダー: | #include <QFileSystemModel> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| 継承元: | QAbstractItemModel |
パブリック型
| enum | Option { DontWatchForChanges, DontResolveSymlinks, DontUseCustomDirectoryIcons } |
| flags | Options |
| enum | Roles { FileIconRole, FilePathRole, FileNameRole, FilePermissions, FileInfoRole } |
プロパティ
- nameFilterDisables : bool
- options : Options
- readOnly : bool
- resolveSymlinks : bool
パブリック関数
| QFileSystemModel(QObject *parent = nullptr) | |
| virtual | ~QFileSystemModel() |
| QIcon | fileIcon(const QModelIndex &index) const |
| QFileInfo | fileInfo(const QModelIndex &index) const |
| QString | fileName(const QModelIndex &index) const |
| QString | filePath(const QModelIndex &index) const |
| QDir::Filters | filter() const |
| QAbstractFileIconProvider * | iconProvider() const |
| QModelIndex | index(const QString &path, int column = 0) const |
| bool | isDir(const QModelIndex &index) const |
| bool | isReadOnly() const |
| QDateTime | lastModified(const QModelIndex &index) const |
(since 6.6) QDateTime | lastModified(const QModelIndex &index, const QTimeZone &tz) const |
| QModelIndex | mkdir(const QModelIndex &parent, const QString &name) |
| QVariant | myComputer(int role = Qt::DisplayRole) const |
| bool | nameFilterDisables() const |
| QStringList | nameFilters() const |
| QFileSystemModel::Options | options() const |
| QFileDevice::Permissions | permissions(const QModelIndex &index) const |
| bool | remove(const QModelIndex &index) |
| bool | resolveSymlinks() const |
| bool | rmdir(const QModelIndex &index) |
| QDir | rootDirectory() const |
| QString | rootPath() const |
| void | setFilter(QDir::Filters filters) |
| void | setIconProvider(QAbstractFileIconProvider *provider) |
| void | setNameFilterDisables(bool enable) |
| void | setNameFilters(const QStringList &filters) |
| void | setOption(QFileSystemModel::Option option, bool on = true) |
| void | setOptions(QFileSystemModel::Options options) |
| void | setReadOnly(bool enable) |
| void | setResolveSymlinks(bool enable) |
| QModelIndex | setRootPath(const QString &newPath) |
| qint64 | size(const QModelIndex &index) const |
| bool | testOption(QFileSystemModel::Option option) const |
| QString | type(const QModelIndex &index) const |
再実装されたパブリック関数
| virtual bool | canFetchMore(const QModelIndex &parent) const override |
| virtual int | columnCount(const QModelIndex &parent = QModelIndex()) const override |
| virtual QVariant | data(const QModelIndex &index, int role = Qt::DisplayRole) const override |
| virtual bool | dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override |
| virtual void | fetchMore(const QModelIndex &parent) override |
| virtual Qt::ItemFlags | flags(const QModelIndex &index) const override |
| virtual bool | hasChildren(const QModelIndex &parent = QModelIndex()) const override |
| virtual QVariant | headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override |
| virtual QModelIndex | index(int row, int column, const QModelIndex &parent = QModelIndex()) const override |
| virtual QMimeData * | mimeData(const QModelIndexList &indexes) const override |
| virtual QStringList | mimeTypes() const override |
| virtual QModelIndex | parent(const QModelIndex &index) const override |
| virtual QHash<int, QByteArray> | roleNames() const override |
| virtual int | rowCount(const QModelIndex &parent = QModelIndex()) const override |
| virtual bool | setData(const QModelIndex &idx, const QVariant &value, int role = Qt::EditRole) override |
| virtual QModelIndex | sibling(int row, int column, const QModelIndex &idx) const override |
| virtual void | sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override |
| virtual Qt::DropActions | supportedDropActions() const override |
シグナル
| void | directoryLoaded(const QString &path) |
| void | fileRenamed(const QString &path, const QString &oldName, const QString &newName) |
| void | rootPathChanged(const QString &newPath) |
再実装された保護関数
| virtual bool | event(QEvent *event) override |
| virtual void | timerEvent(QTimerEvent *event) override |
詳細な説明
このクラスはローカルファイルシステムへのアクセスを提供し、ファイルやディレクトリの名前変更や削除、および新しいディレクトリの作成を行う関数を提供します。最も単純なケースでは、ブラウザやフィルタの一部として、適切な表示ウィジェットとともに使用することができます。
QFileSystemModel には、QAbstractItemModel が提供する標準インターフェースを使用してアクセスできますが、ディレクトリモデルに固有の便利な関数もいくつか提供しています。fileInfo()、isDir()、fileName()、およびfilePath() 関数は、モデル内の項目に関連する基盤となるファイルやディレクトリに関する情報を提供します。ディレクトリは、mkdir() およびrmdir() を使用して作成および削除できます。
使用例
デフォルトのディレクトリの内容を表示するディレクトリモデルは、通常、親オブジェクトを使用して構築されます:
QFileSystemModel *model = new QFileSystemModel;
model->setRootPath(QDir::currentPath());ツリービューを使用して、モデルの内容を表示できます
また、ツリービューのルートインデックスを設定することで、特定のディレクトリの内容を表示できます:
tree->setRootIndex(model->index(QDir::currentPath()));ビューのルートインデックスを使用することで、階層モデルのどの範囲を表示するかを制御できます。QFileSystemModel には、モデル内のディレクトリへのパスに対して適切なモデルインデックスを返す便利な関数が用意されています。
キャッシュとパフォーマンス
QFileSystemModel は、自身のデータ読み込みに別のスレッドを使用するため、ファイルシステムの照会中にメインスレッドがハングアップすることはありません。rowCount() の呼び出しは、モデルがディレクトリのデータを読み込むまで、0 を返します。QFileSystemModel が実行されているスレッドでは、受信データを処理するためにイベントループを実行する必要があります。
QFileSystemModelは、setRootPath()が呼び出されるまで、自身の初期化を開始しません。これにより、その時点までは、Windowsでのドライブの列挙など、システムのルートファイルシステムに対する不要なクエリが防止されます。
QFileSystemModel は、ファイル情報を格納するキャッシュを保持しています。このキャッシュは、QFileSystemWatcher を使用して自動的に最新の状態に保たれます。
「モデルクラス」も参照してください 。
メンバ型のドキュメント
enum QFileSystemModel::Option
flags QFileSystemModel::Options
| 定数 | 値 | 説明 |
|---|---|---|
QFileSystemModel::DontWatchForChanges | 0x00000001 | パスにファイルウォッチャーを追加しない。これにより、行編集の補完などの単純なタスクでこのモデルを使用する際のオーバーヘッドが軽減される。 |
QFileSystemModel::DontResolveSymlinks | 0x00000002 | ファイルシステムモデル内でシンボリックリンクを解決しない。デフォルトでは、シンボリックリンクは解決される。 |
QFileSystemModel::DontUseCustomDirectoryIcons | 0x00000004 | 常にデフォルトのディレクトリアイコンを使用します。一部のプラットフォームでは、ユーザーが別のアイコンを設定できる場合があります。カスタムアイコンの検索は、ネットワークドライブやリムーバブルドライブ上でパフォーマンスに大きな影響を与えます。これにより、アイコンプロバイダ内の QFileIconProvider::DontUseCustomDirectoryIcons オプションが適切に設定されます。 |
Options 型は、QFlags<Option> の typedef です。Option 値の論理和(OR)を格納します。
resolveSymlinksも参照してください 。
enum QFileSystemModel::Roles
| 定数 | 値 | 説明 |
|---|---|---|
QFileSystemModel::FileIconRole | Qt::DecorationRole | |
QFileSystemModel::FilePathRole | Qt::UserRole + 1 | |
QFileSystemModel::FileNameRole | Qt::UserRole + 2 | |
QFileSystemModel::FilePermissions | Qt::UserRole + 3 | |
QFileSystemModel::FileInfoRole | Qt::FileInfoRole | インデックス用のQFileInfo オブジェクト |
プロパティのドキュメント
nameFilterDisables : bool
このプロパティは、名前フィルターに一致しないファイルが非表示になるか、無効化されるかを指定します
このプロパティのデフォルト値はtrue です
アクセス関数:
| bool | nameFilterDisables() const |
| void | setNameFilterDisables(bool enable) |
options : Options
このプロパティには、モデルに影響を与えるさまざまなオプションが格納されています
デフォルトでは、すべてのオプションは無効になっています。
プロパティを変更する前に、オプションを設定しておく必要があります。
アクセス関数:
| QFileSystemModel::Options | options() const |
| void | setOptions(QFileSystemModel::Options options) |
setOption() およびtestOption()も参照してください 。
readOnly : bool
このプロパティは、ディレクトリモデルがファイルシステムへの書き込みを許可するかどうかを指定します
このプロパティが false に設定されている場合、ディレクトリモデルではファイルやディレクトリの名前変更、コピー、削除が可能になります。
このプロパティのデフォルト値は `true ` です
アクセス関数:
| bool | isReadOnly() const |
| void | setReadOnly(bool enable) |
resolveSymlinks : bool
このプロパティは、ディレクトリモデルがシンボリックリンクを解決すべきかどうかを指定します
これは Windows でのみ関連します。
デフォルトでは、このプロパティの値は `true` です。
アクセス関数:
| bool | resolveSymlinks() const |
| void | setResolveSymlinks(bool enable) |
「QFileSystemModel::Options」も参照してください 。
メンバ関数のドキュメント
[explicit] QFileSystemModel::QFileSystemModel(QObject *parent = nullptr)
指定されたparent を使用して、ファイルシステムモデルを構築します。
[virtual noexcept] QFileSystemModel::~QFileSystemModel()
このファイルシステムモデルを破棄します。
[override virtual] bool QFileSystemModel::canFetchMore(const QModelIndex &parent) const
QAbstractItemModel::canFetchMore(const QModelIndex &parent) const を再実装しています。
[override virtual] int QFileSystemModel::columnCount(const QModelIndex &parent = QModelIndex()) const
QAbstractItemModel::columnCount(const QModelIndex &parent) const を再実装します。
[override virtual] QVariant QFileSystemModel::data(const QModelIndex &index, int role = Qt::DisplayRole) const
QAbstractItemModel::data(const QModelIndex &index, int role) const を再実装します。
setData()も参照してください 。
[signal] void QFileSystemModel::directoryLoaded(const QString &path)
このシグナルは、ギャザースレッドがpath の読み込みを完了したときに発せられます。
[override virtual] bool QFileSystemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent)
QAbstractItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) を再実装します。
row およびcolumn で指定されたモデル内の行、およびparent で指定されたインデックス上で、指定されたaction で終了したドラッグ&ドロップ操作によって渡されたdata を処理します。操作が成功した場合は true を返します。
supportedDropActions()も参照してください 。
[override virtual protected] bool QFileSystemModel::event(QEvent *event)
QObject::event(QEvent *e) を再実装します。
[override virtual] void QFileSystemModel::fetchMore(const QModelIndex &parent)
QAbstractItemModel::fetchMore (const QModelIndex &parent)を再実装しています。
QIcon QFileSystemModel::fileIcon(const QModelIndex &index) const
指定されたindex の下にモデルに格納されているアイテムのアイコンを返します。
QFileInfo QFileSystemModel::fileInfo(const QModelIndex &index) const
指定されたindex の下で、モデルに格納されているアイテムのQFileInfo を返します。
QString QFileSystemModel::fileName(const QModelIndex &index) const
指定されたindex の下にモデルに格納されている項目のファイル名を返します。
QString QFileSystemModel::filePath(const QModelIndex &index) const
指定されたindex の下に、モデルに格納されている項目のパスを返します。
[signal] void QFileSystemModel::fileRenamed(const QString &path, const QString &oldName, const QString &newName)
このシグナルは、oldName というファイル名がnewName に変更された際に送信されます。このファイルは、path ディレクトリ内にあります。
QDir::Filters QFileSystemModel::filter() const
ディレクトリモデルに指定されたフィルタを返します。
フィルタが設定されていない場合、デフォルトのフィルタは `QDir::AllEntries |QDir::NoDotAndDotDot |QDir::AllDirs` となります。
setFilter() およびQDir::Filtersも参照してください 。
[override virtual] Qt::ItemFlags QFileSystemModel::flags(const QModelIndex &index) const
QAbstractItemModel::flags(const QModelIndex &index) const を再実装します。
[override virtual] bool QFileSystemModel::hasChildren(const QModelIndex &parent = QModelIndex()) const
QAbstractItemModel::hasChildren(const QModelIndex &parent) const を再実装します。
[override virtual] QVariant QFileSystemModel::headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const
QAbstractItemModel::headerData(int section, Qt::Orientation orientation, int role) const を再実装します。
QAbstractFileIconProvider *QFileSystemModel::iconProvider() const
このディレクトリモデルのファイルアイコンプロバイダを返します。
setIconProvider()も参照してください 。
[override virtual] QModelIndex QFileSystemModel::index(int row, int column, const QModelIndex &parent = QModelIndex()) const
QAbstractItemModel::index (int row, int column, const QModelIndex &parent)const を再実装します。
QModelIndex QFileSystemModel::index(const QString &path, int column = 0) const
指定されたpath およびcolumn に対するモデル項目のインデックスを返します。
これはオーバーロードされた関数です。
bool QFileSystemModel::isDir(const QModelIndex &index) const
モデル項目 `index ` がディレクトリを表す場合は `true ` を返し、そうでない場合は `false` を返します。
QDateTime QFileSystemModel::lastModified(const QModelIndex &index) const
index が最後に変更された日時(現地時間)を返します。
これはオーバーロードされた関数であり、次の呼び出しと同等です:
lastModified(index, QTimeZone::LocalTime);index が無効な場合、デフォルト生成されたQDateTime が返されます。
[since 6.6] QDateTime QFileSystemModel::lastModified(const QModelIndex &index, const QTimeZone &tz) const
tz のタイムゾーンにおける、index が最後に変更された日時を返します。
tz の一般的な引数には、QTimeZone::UTC またはQTimeZone::LocalTime があります。UTC の場合、ネイティブのファイルシステム API から返される時刻からの変換は不要であるため、UTC での時刻取得の方が高速になる可能性があります。ユーザーに時刻を表示する場合は、通常、LocalTime が選択されます。
index が無効な場合、デフォルト構築されたQDateTime が返されます。
この関数は Qt 6.6 で導入されました。
[override virtual] QMimeData *QFileSystemModel::mimeData(const QModelIndexList &indexes) const
QAbstractItemModel::mimeData(const QModelIndexList &indexes) const を再実装します。
指定された `indexes` のシリアライズされた記述を含むオブジェクトを返します。インデックスに対応する項目を記述するために使用される形式は、mimeTypes() 関数から取得されます。
インデックスのリストが空の場合、シリアル化された空のリストではなく、nullptr が返されます。
[override virtual] QStringList QFileSystemModel::mimeTypes() const
QAbstractItemModel::mimeTypes() const を再実装します。
モデル内の項目のリストを記述するために使用できる MIME タイプのリストを返します。
QModelIndex QFileSystemModel::mkdir(const QModelIndex &parent, const QString &name)
parent モデルのインデックス内に、name というディレクトリを作成します。
QVariant QFileSystemModel::myComputer(int role = Qt::DisplayRole) const
指定されたrole に保存されている、「マイコンピュータ」という項目のデータを返します。
「Qt::ItemDataRole」も参照してください 。
QStringList QFileSystemModel::nameFilters() const
モデル内の名前に対して適用されたフィルタのリストを返します。
setNameFilters()も参照してください 。
[override virtual] QModelIndex QFileSystemModel::parent(const QModelIndex &index) const
QAbstractItemModel::parent(const QModelIndex &index) const を再実装します。
QFileDevice::Permissions QFileSystemModel::permissions(const QModelIndex &index) const
index に対する QFile::Permission のすべてを OR 演算で結合した結果を返します。
bool QFileSystemModel::remove(const QModelIndex &index)
ファイルシステムモデルからモデル項目「index 」を削除し、ファイルシステムから対応するファイルを削除します。成功した場合は true を返します。項目を削除できない場合は false を返します。
警告: この関数はファイルシステムからファイルを 削除します。復元可能な場所へファイルを移動するわけではありません。
関連項目 :rmdir()
bool QFileSystemModel::rmdir(const QModelIndex &index)
ファイルシステムモデル内のモデル項目「index 」に対応するディレクトリを削除し、ファイルシステムからもそのディレクトリを削除します。成功した場合は true を返します。ディレクトリを削除できない場合は false を返します。
警告:この関数はファイルシステムからディレクトリを 削除します。復元可能な場所へ移動するわけではありません。
関連項目 :remove()
[override virtual] QHash<int, QByteArray> QFileSystemModel::roleNames() const
QAbstractItemModel::roleNames() const を再実装します。
QDir QFileSystemModel::rootDirectory() const
現在設定されているディレクトリ
rootPath()も参照してください 。
QString QFileSystemModel::rootPath() const
現在設定されているルートパス
setRootPath() およびrootDirectory()も参照してください 。
[signal] void QFileSystemModel::rootPathChanged(const QString &newPath)
ルートパスがnewPath に変更されるたびに、このシグナルが発信されます。
[override virtual] int QFileSystemModel::rowCount(const QModelIndex &parent = QModelIndex()) const
QAbstractItemModel::rowCount(const QModelIndex &parent) const を再実装します。
[override virtual] bool QFileSystemModel::setData(const QModelIndex &idx, const QVariant &value, int role = Qt::EditRole)
QAbstractItemModel::setData(const QModelIndex &index, const QVariant &value, int role) を再実装します。
data()も参照してください 。
void QFileSystemModel::setFilter(QDir::Filters filters)
ディレクトリモデルのフィルターを、filters で指定された値に設定します。
設定するフィルタには、必ずQDir::AllDirs の列挙型値を含める必要があります。そうしないと、QFileSystemModel はディレクトリ構造を読み取ることができません。
filter() およびQDir::Filtersも参照してください 。
void QFileSystemModel::setIconProvider(QAbstractFileIconProvider *provider)
ディレクトリモデルのファイルアイコンのprovider を設定します。
iconProvider()も参照してください 。
void QFileSystemModel::setNameFilters(const QStringList &filters)
既存のファイルに対して適用する名前「filters 」を設定します。
nameFilters()も参照してください 。
void QFileSystemModel::setOption(QFileSystemModel::Option option, bool on = true)
on がtrueの場合、指定されたoption を有効にします。そうでない場合は、指定されたoption をクリアします。
プロパティを変更する前に、オプションを設定しておく必要があります。
options およびtestOption()も参照してください 。
QModelIndex QFileSystemModel::setRootPath(const QString &newPath)
このディレクトリにfile system watcher をインストールすることで、モデルが監視対象とするディレクトリをnewPath に設定します。このディレクトリ内のファイルやディレクトリに変更があると、その変更はモデルに反映されます。
パスが変更された場合、rootPathChanged() シグナルが発信されます。
注:この関数は 、モデルの構造を変更したり、ビューから利用可能なデータを変更したりすることはありません。つまり、モデルの「ルート」が変更されて、ファイルシステム上の `newPath ` で指定されたディレクトリ内のファイルやディレクトリのみが含まれるようになることはありません。
rootPath()、QTreeView::setRootIndex()、およびTreeView::rootIndexも参照してください 。
[override virtual] QModelIndex QFileSystemModel::sibling(int row, int column, const QModelIndex &idx) const
QAbstractItemModel::sibling (int row, int column, const QModelIndex &index)const を再実装します。
qint64 QFileSystemModel::size(const QModelIndex &index) const
index のサイズ(バイト単位)を返します。ファイルが存在しない場合は、0が返されます。
[override virtual] void QFileSystemModel::sort(int column, Qt::SortOrder order = Qt::AscendingOrder)
QAbstractItemModel::sort(int column, Qt::SortOrder order) の再実装です。
[override virtual] Qt::DropActions QFileSystemModel::supportedDropActions() const
QAbstractItemModel::supportedDropActions() const を再実装します。
bool QFileSystemModel::testOption(QFileSystemModel::Option option) const
指定されたoption が有効な場合はtrue を返し、そうでない場合はfalseを返します。
options およびsetOption()も参照してください 。
[override virtual protected] void QFileSystemModel::timerEvent(QTimerEvent *event)
QObject::timerEvent(QTimerEvent *event) を再実装します。
QString QFileSystemModel::type(const QModelIndex &index) const
index のファイルの種類(「ディレクトリ」や「JPEG ファイル」など)を返します。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.