zoukankan      html  css  js  c++  java
  • Qt 实现浏览本地文件、双击打开选中的文档

    一、首先在建立的Qt工程的.h文件中添加我们需要的头文件

    #include <QDir>
    #include <QFileInfoList>
    #inlcude <QFileInfo>
    #include <QProcess>

     二、添加所需的私有槽函数、私有成员

    void showFileInfoList(QFileInfoList list); //根据获取的QFileInfoList显示本地目录
    void slotDirShow(QListWidgetItem *item);   //由双击的文件确定新的目录
    void slotShow(QDir dir);  //由新的目录调用showFileInfoList显示
    
    private:
      QString myPath;   //记录文件当前路径

    三、在构造函数中确定初始目录,并调用显示

     myPath = "D:";
     QDir dir(myPath);
     QFileInfoList list;
    
     list = dir.entryInfoList();
     showFileInfoList(list);

     连接对应槽函数(鼠标双击事件)

    connect(ui->listWidget,SIGNAL(itemDoubleClicked(QListWidgetItem*)),
                    this,SLOT(slotDirShow(QListWidgetItem*)));

    四、实现对应的函数

    void MainWindow::showFileInfoList(QFileInfoList list)
    {
        ui->listWidget->clear();
        for(int i=0; i<list.count() ;i++)
        {
            QFileInfo tmpFileInfo = list.at(i);
            if(tmpFileInfo.isDir())    //为目录则添加文件夹图标及对应文件名
            {
                QIcon icon(":/1.jpg");    
                QString fileName = tmpFileInfo.fileName();
                QListWidgetItem *tmp = new QListWidgetItem(icon, fileName);
                ui->listWidget->addItem(tmp);
            }
            else if(tmpFileInfo.isFile())    //为普通文件则添加普通文件图标及对应文件名
            {
                QIcon icon(":/2.jpg");
                QString fileName = tmpFileInfo.fileName();
                QListWidgetItem *tmp = new QListWidgetItem(icon, fileName);
                ui->listWidget->addItem(tmp);
            }
        }
    
    }
    
    void MainWindow::slotShow(QDir dir)
    {
        QFileInfoList list = dir.entryInfoList();
        showFileInfoList(list);
    }
    
    //鼠标双击触发,接受item参数
    void MainWindow::slotDirShow(QListWidgetItem *item)
    {
        QString str = item->text();
        QDir dir;
    
        dir.setPath(myPath);
        if(!dir.cd(str))         //如果进入失败,则为普通文件,创建新的进程打开对应文件
        {
            QStringList arguments;
            QString start_path = myPath+"\" + str;
            arguments << "/c" << start_path;
    
            QProcess* process = new QProcess;
    
            qDebug() << start_path << endl;
            process->start("cmd.exe",arguments);  //开启新进程打开文件
            return;
        }
        myPath = dir.absolutePath();    //更新路径
        slotShow(dir);
    }

    五、实现效果(双击文件夹则进入,双击普通文件则打开)

           

  • 相关阅读:
    Java并发编程(六)——Callable接口
    java基础——反射
    java基础——序列化
    java基础——IO
    java基础——File类
    操作nginx时遇到的各种问题
    linux安装nginx 简单版
    linux 重命名文件和文件夹
    Linux 程序安装目录 /opt 目录和 /usr/local 目录
    Linux 各种安装包
  • 原文地址:https://www.cnblogs.com/xiehuan-blog/p/9585193.html
Copyright © 2011-2022 走看看