【问题标题】:Printing filenames in a specific folder using any QT widget使用任何 QT 小部件打印特定文件夹中的文件名
【发布时间】:2017-08-17 07:46:37
【问题描述】:

使用下面的代码,我可以获取特定文件夹中的所有文件名。现在我想显示从 QT 小部件中获得的文件名,例如 qlinedit 或 qtextedit 或 qstringlist。我该怎么做?

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

【问题讨论】:

    标签: c++ qt qt-creator qtableview qlineedit


    【解决方案1】:

    在 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 类提供对目录结构及其内容的访问。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多