まず、複数のイメージを格納するフォルダがあるとします。その後、UIのボタンをクリックしてフォルダを開き、そのフォルダ内の画像のすべてのファイルパスをQList(フィルタリングされた画像ファイルのみ)に保存しようとします。しかし、QListは何も格納しません。助けてください。QTでQFileSystemModelからファイルパスを取得する方法(C++)
答えて
QDir::entryList()
を適切なフィルタで代わりに使用すると、意図した目的を達成し、コードとオーバーヘッドを大幅に削減できます。
これは便利な答えです。OPが、ツリービューを作成するためのアイテムモデルが必要であることを示していることだけです。そして、質問はなぜ 'QFileSystemModel'がリストを埋めるために働かないのかということでした。まあまあ...:P –
void MainWindow::on_pushButton_clicked()
{
QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),
"/home",
QFileDialog::ShowDirsOnly
| QFileDialog::DontResolveSymlinks);
model = new QFileSystemModel();
filesPath = dir;
model->setRootPath(dir);
QStringList filter;
filter <<"*.png" <<"*.jpg" <<"*.bmp" <<"*.gif";
model->setNameFilters(filter);
model->setNameFilterDisables(false);
ui->treeView->setModel(model);
ui->treeView->setRootIndex(model->index(dir));
ui->treeView->setAnimated(false);
ui->treeView->setSortingEnabled(true);
QList<QString> path_list;
QModelIndex parentIndex = model->index(dir);
int numRows = model->rowCount(parentIndex);
for (int row = 0; row < numRows; ++row) {
QModelIndex childIndex = model->index(row, 0, parentIndex);
QString path = model->data(childIndex).toString();
if(!QFileInfo(path).isDir())
path_list.append(path);
}
}
コメント欄で述べたように、QFileSystemModel
は、そのように使用されるように設計されていませんでした。ここで重要なのは、あなたが(強調鉱山)に指摘されたドキュメントである:
QDirModel、QFileSystemModelは、それがファイルシステムとしてハングアップするためにメインスレッドが照会されることはありませんので、自分自身を移入するために別のスレッドを使用していますとは異なり、 。 rowCount()を呼び出すと、モデルによってディレクトリが生成されるまで0が返されます。
どうしてもリストを構築するためにQFileSystemModel
を使用したい場合は、あなたがdirectoryLoaded(const QString &path)
信号に関数を接続し、それがロードされた後、各フォルダ内のファイルを追加する必要があるだろう...しかし、多くは、おそらくありますあなたが必要とするものを達成するためのよりよい方法。
- 1. C#「Open With」からファイルパスを取得する方法は?
- 2. コンソールからファイルパスを取得するC#
- 3. C++ - Mac OSXでファイルパスを取得する
- 4. HttpPostedFileBaseからファイルパスを取得する方法
- 5. xamarinのファイルパスからファイルイメージソースを取得する方法
- 6. VBAの別のシートからファイルパスを取得する方法
- 7. ファイルパスからIVsTextLinesを取得する
- 8. ファイルパスからフォルダパスを取得する
- 9. Qt現在の再生メディアのファイルパスを取得しますか?
- 10. Qtモデルからすべてのデータを取得する方法
- 11. QT - QVectorから "currentIndexChanged"を取得する方法<QComboBox*>
- 12. テキストからテキスト全体を取得する方法QT
- 13. VB.net:Printformから印刷ファイルパスを取得する方法はありますか?
- 14. Qtライブラリパスを取得する方法
- 15. C#のテキストボックスからファイル名を使用してファイルパスを取得
- 16. testmethodからC#でstringの値を取得する方法C#
- 17. iOSでCを使用してプロジェクトディレクトリからファイルパスを取得する
- 18. Mac OS X上のQT、QFileSystemModelでSetRootPath
- 19. C# - 接続文字列からファイルパスを取得
- 20. EnvDTE - FileNamesプロパティを使用してProjectItemからファイルパスを取得する方法
- 21. Ionic 2 - コンポーネントクラスからのファイルパスを取得
- 22. Pythonのファイルパスからファイル名を取得
- 23. ファイルパスからビデオ情報を取得
- 24. angular2 nativescriptでローカルjsonファイルパスを取得する方法
- 25. jspでブラウズされたファイルパスを取得する方法..............?
- 26. ファイルパスなしでファイル名のみを取得する方法は?
- 27. Pythonで絶対ファイルパスを取得する方法
- 28. Android 7 nougat、着信意図からのファイルパスを取得する方法は?
- 29. "../../"から正しいファイルパスを取得する方法とPythonで別のパスを返す方法
- 30. PythonからC structを受け取る/取得する方法
あなたはQtのドキュメントを読む必要があります:http://doc.qt.io/qt-5/qfilesystemmodel.html#details –
@ md612それにはなぜ 'QFileSystemModel'を使用していますか? –
@Dmitry Sazonov QtreeView – md612