Using the below code, I am able to obtain all the filenames in a specific folder. Now I want to display the filenames obtained in of the QT widgets like qlinedit
or qtextedit
or qstringlist
. how should I do it?
@
QFileDialog dialog;
dialog.setFileMode(QFileDialog::Directory);
dialog.setOption(QFileDialog::DontUseNativeDialog,true);
dialog.setOption(QFileDialog::DontResolveSymlinks);
dialog.setNameFilterDetailsVisible(true);
dialog.setViewMode(QFileDialog::Detail);
QStringList filters;
filters <<"Any files (*)";
dialog.setOption(QFileDialog::HideNameFilterDetails,false);
dialog.setNameFilters(filters);
int res = dialog.exec();
QDir directory;
QString file = directory.currentPath();
if (res)
{
directory = dialog.selectedFiles()[0];
QStringList filesList = directory.entryList(QDir::Files);
QString fileName;
foreach(fileName, filesList)
{
qDebug() << "FileName " << fileName;
}
}
@
There is a better solution for showing disk directory on UI.
You can use QDirModel to get all directory and show it in treeView:
.cpp file:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QDirModelObj = new QDirModel();
loadDirecory();
QModelIndex ModelIndex = QDirModelObj->index("F:/");
ui->treeView->expand(ModelIndex);
ui->treeView->scrollTo(ModelIndex);
ui->treeView->setCurrentIndex(ModelIndex);
ui->treeView->resizeColumnToContents(0);
timer = new QTimer;
connect(timer, SIGNAL(timeout()), this, SLOT(loadDirecory()));
timer->start(10000); // Update every 10 sec
}
void MainWindow::loadDirecory()
{
QDirModelObj->setReadOnly(false);
QDirModelObj->setSorting(QDir::DirsFirst | QDir::IgnoreCase | QDir::Name);
ui->treeView->setModel(QDirModelObj);
}
MainWindow::~MainWindow()
{
delete ui;
}
.h file:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDirModel>
#include <QInputDialog>
#include <QTimer>
#include <QDebug>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
public slots:
void loadDirecory();
private:
Ui::MainWindow *ui;
QDirModel *QDirModelObj;
QTimer *timer;
};
#endif // MAINWINDOW_H
More info:
The QDir class provides access to directory structures and their contents.
The QDirModel class provides a data model for the local filesystem.