2011-01-17 22 views
2

1つのファイル形式しかユーザーに表示されないように設定できますか? 私はドキュメントでそれを探していますが、見つけられません... もしそうでない場合は、使用したい他のウィジェットはありますか?QTreeViewでの1種類のファイル形式

答えて

1

あなたはQFreeSystemModelでQTreeViewを使用していると仮定します。そうでない場合は、そうすることをお勧めします。 QTreeWidgetは柔軟性がありません。

QFileSystemModelには、setNameFiltersというメソッドがあり、必要な処理を行う必要があります。

QStringList filters; 
filters.append("*.cc"); // whatever filters you want 
filters.append("*.h"); 

QFileSystemModel *model = new QFileSystemModel; 
model->setNameFilters(filters); 

QTreeView *view = new QTreeView; 
view->setModel(model); 
+0

ありがとう:それを使用するには、このような何かを!私はそれを試しましたが、私はCのディレクトリと1つの子カタログ、そして1つのグランドチャイルドしか見ることができませんでした。私は別の時間にそれを試してみるだろうが、私はたくさんありませんし、私のプロジェクトでは、filesSelected()シグナルを持っているので、MainWindow内のウィジェットとして使用されるQFileDialogが役に立ちます。 (目標は、ファイルを選択し、音楽を演奏する機能にQStringを送信することです)。しかし、私はQFileDialogを選択した後に消えます。あなたは決して壊れないようにそれを設定する方法を知っていますか? – lvp

+0

標準のQFileDialogを書き直す(サブクラス化せずに)決して閉じることはできないと思います。あなたはそれが終わったときを見ることができ、直ちにそれを再表示することができますが、それはたぶんちらつきを引き起こします。 QFileSystemModelからQItemSelectionModelを取得して、選択がいつ変更されたか(およびその選択内容)を知ることができます。それはより多くの作業になりますが、QFileSystemModelを動作させることができれば、結果に満足するでしょう。 –

0
//filter treeview for directories and torrent files only 

QStringList filters; 
filters << "*.torrent"; 

QDirModel model = new QDirModel(this); 
model->setReadOnly(true); 
model->setSorting(QDir::DirsFirst |QDir::IgnoreCase | QDir::Type); 
model->setFilter(QDir::AllDirs | QDir::AllEntries |QDir::NoDotAndDotDot); 

model->setNameFilters(filters); 
ui->treeView->setModel(model); 
+0

あなたの答えにいくつかの説明を加えてください。 – ncm

関連する問題