Qt创建文件浏览器(续)

 

    文件浏览器主要有三部分组成: 1 返回上级菜单按钮   2地址栏(QLinedit)   3目录显示栏(Qtreeview)

    上篇文章调用系统的文件目录到Qtreeview部件中 主要实现了文件浏览器的主体功能  这一篇主要是添加一些小功能来完善文件浏览器 主要包括以下几个功能:

                   1  在地址栏粘贴地址 按下回车直接跳转到对应目录

                   2 地址栏添加地址自动补全  用户输入一个字符就会弹出下拉菜单提示输入

                   3  添加返回按钮的信号槽  实现返回上一级菜单

          通过实现这些功能 我们可以了解Qt在GUI编程的强大之处!



     功能一: 创建槽函数 slotGetPath() 相应QL'ineEdit的returnPressed()信号 

                    

void fileView::slotgetPath()
{
    QString path=LineEditDir->text();
    path.replace(QString("\\"),QString("/")); //替换符号
   // tree->expand(model->index(path)); //展开对应的文件项
    tree->setRootIndex(model->index(path));

}

   功能二: 利用到了Qt中的 QCompleter类(见参考文献1)   

     

completer=new QCompleter(model,LineEditDir);//Qt自动补全类 地址补全类

    //给地址栏添加补全类并设置显示数目
    completer->setMaxVisibleItems(5);
    LineEditDir->setCompleter(completer);


    功能三: 返回按钮:

              用了QDir的cdup() 函数  但QDir有个问题是他不能返回到磁盘目录  所以用cdUp()返回的bool值作为参数实现一个if语句

    感觉方法用的有点笨 不过基本功能还是都实现了的!

                  

//实现返回上一层菜单
void fileView::slotBtnclicked()
{
    QString path=LineEditDir->text();
    path.replace(QString("\\"),QString("/")); //替换符号
    QDir dir;
    dir.setPath(path);
    dir.cdUp();   //返回父目录
    path=dir.absolutePath();
    path.replace(QString("/"),QString("\\")); //替换符号
    if(dir.cdUp()==true)
    {
    tree->setRootIndex(model->index(path));
     LineEditDir->setText(path);
    } else if(dir.cdUp()==false)
    {
        tree->setRootIndex(model->index(" "));
         LineEditDir->setText("");
    }

}

贴一张界面图:

   Qt创建文件浏览器(续)_第1张图片
   

参考文献:

【1】  QCompleter

你可能感兴趣的:(Qt创建文件浏览器(续))