Qt创建文件浏览器(续)
2016-04-13 12:42
441 查看
文件浏览器主要有三部分组成: 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("");
}
}
贴一张界面图:
参考文献:
【1】 QCompleter
相关文章推荐
- Qt相关数据类型转换
- QT、QTE、qtopia区别
- Qt学习: Model/View实现表格和统计图
- QT生成excel文件
- Qt之串口编程
- Qt 学习: 视图选择 (QItemSelectionModel)
- VS2013 + QT5.6.0
- vs2012编译PCL依赖库VTK7.0
- QT安装过程中报错无法定位程序输入点except1 于动态链接库MSVCR120D dll上
- Qt编程规范
- QtZint编译过程记录(要使用 QTMAKE_CFLAGS += /TP 参数)
- 关于Qt使用MySQL的体会
- QT核心编程之Qt线程 (c)
- QT核心编程之调试技术 (g)
- QtInternal 之 高效使用QString
- Qt动画效果的实现,QPropertyAnimation
- Qt5如何设置静态编译,解决生成的可执行文件打开出错问题
- <QtEndian> - Endian Conversion Functions
- QT 常用快捷键
- win764位下qt开发中配置openssl库·