使用任何 QT 小部件打印特定文件夹中的文件名

Printing filenames in a specific folder using any QT widget

使用下面的代码,我能够获取特定文件夹中的所有文件名。现在我想显示在 QT 小部件中获得的文件名,如 qlineditqtexteditqstringlist。我应该怎么做?

@
    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;
        }
    }
@

在UI上显示磁盘目录有更好的解决方案。

您可以使用 QDirModel 获取所有目录并在 treeView 中显示:

.cpp 文件:

#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 文件:

#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

更多信息:

QDir class 提供对目录结构及其内容的访问。

QDirModel class 为本地文件系统提供数据模型。