あなたができることは次のとおりだと思います:
- カスタム プロキシ モデルを作成します。QSortFilterProxyModelをモデルの基本クラスとして使用できます。
- プロキシ モデルでは、filterAcceptsRowメソッドをオーバーライドし、 「.backup.」を持つファイルに対して false を返します。彼らの名前の単語;
- 新しいプロキシ モデルをファイル ダイアログに設定します: QFileDialog::setProxyModel ;
以下に例を示します。
プロキシ モデル:
class FileFilterProxyModel : public QSortFilterProxyModel
{
protected:
virtual bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const;
};
bool FileFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
{
QModelIndex index0 = sourceModel()->index(sourceRow, 0, sourceParent);
QFileSystemModel* fileModel = qobject_cast<QFileSystemModel*>(sourceModel());
return fileModel->fileName(index0).indexOf(".backup.") < 0;
// uncomment to call the default implementation
//return QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent);
}
ダイアログは次のように作成されました。
QFileDialog dialog;
dialog.setOption(QFileDialog::DontUseNativeDialog);
dialog.setProxyModel(new FileFilterProxyModel);
dialog.setNameFilter("XML (*.xml)");
dialog.exec();
プロキシ モデルは、非ネイティブ ファイル ダイアログでのみサポートされます。