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

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

           

  • 相关阅读:
    UNIX网络编程之旅配置unp.h头文件环境[ 转]
    C++著名程序库
    开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo
    网络库介绍
    置顶问题
    最近做的一个项目
    Storm 遇到问题?
    海量算法视频下载
    Quartz.NET作业调度框架详解
    c#中的委托、事件、Func、Predicate、Observer设计模式以及其他
  • 原文地址:https://www.cnblogs.com/xiehuan-blog/p/9585193.html
Copyright © 2011-2022 走看看