QT:QTreeView文件系统右键菜单实现重命名的问题_qtreeview禁止双击编辑_nalynali的博客-程序员宅基地

技术标签: QT  

实现类似Windows文件管理器的功能,左边treeview文件夹列表,右边列出所有文件。
关于文件重命名:

  1. 左边文件树只可以右键重命名,禁掉双击编辑功能。
  2. 右边文件重命名通过EditTrigger设置。

左边treeview的数据模型为:

QSortFilterProxyModel *filterModel
MyLeftFileView::MyLeftFileView(QFileSystemModel *sourceModel) {
    

	filterModel = new QSortFilterProxyModel();
	filterModel->setSourceModel(sourceModel);
	setModel(filterModel);
	setEditTriggers(QAbstractItemView::NoEditTriggers);
}	

开始使用的这种方法

void MyLeftFileView::triggerRename()
{
    
	QModelIndexList indexList = selectionModel()->selectedRows();
	this->edit(filterModel->mapToSource(indexList.at(0)));
}

运行后无法实现rename,查了output发现提示错误信息:
edit: index was invalid
edit: editing failed

想了半天,原来是filterModel->mapToSource(indexList.at(0))这句话的问题,这里返回的是sourceModel的index,而MyLeftFileView的model是QSortFilterProxyModel ,修改如下后运行正确。

void MyLeftFileView::triggerRename()
{
    
	QModelIndexList indexList = selectionModel()->selectedRows();
	this->edit(indexList.at(0));
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/nalynali/article/details/108124018

智能推荐

Android 实现滑动的侧栏菜单-程序员宅基地

实现一个简单的侧栏菜单,类似于QQ。

(1) Karthik Ganesan的方法 - spec2006中精确的simulation points执行点_simpoint最大权重-程序员宅基地

使用测试集spec2006测试cpu性能时,如果完全跑完所有程序,需要数周甚至数月,周期非常长,想得到实验结果,黄花菜都凉了!现在比较认可的做法是从simulation point开始运行,那么如何生成它呢?使用simpoints工具,自己从头到尾跑一遍生成BBV,再寻找simpoints;使用前人的现有的simpoints结果,spec2006_simpoints,来源于http://www._simpoint最大权重

【拼图】拼图游戏-微信小程序开发流程详解_拼图游戏小程序源码-程序员宅基地

还记得小时候玩过的经典拼图游戏吗,上小学时,在路边摊用买个玩具,是一个正方形盒子形状,里面装的是图片分割成的很多块,还差一块,怎么描述好呢,和魔方玩具差不多,有没有听说叫二维的魔方,这里用小程序把它实现,有感兴趣的同学可以来看看_拼图游戏小程序源码

HDU 5898 (数位DP)-程序员宅基地

HDU 5898odd-even number题意:如果一个数连续的奇数之和为偶数,连续的偶数之和为奇数则满足条件,问某一区间内满足条件的数字的个数。思路:数位DP,dp[i][j][k][u]表示计算到底i位,是否为临界值,上一位是奇还是偶,连续奇或偶有u个,在dfs是多记录一下该数前面是不是全为0以及该数是不是已近不满足条件。#include<cstdio>...

Java 使用blob对H5视频播放进行加密《java视频加密》-程序员宅基地

1.创建一个H5 <video>标签<video id="sound" type="video/mp4" controls="controls" autoplay="autoplay" webkit-playsinline="true" playsinline="true" heigth="100%"></video>...

smart-doc文档生成-程序员宅基地

1、pom依赖<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration>

随便推点

64位操作系统设计与实现1——虚拟机和Bochs的安装与配置_bochs虚拟机显示图片-程序员宅基地

如果你想自己动手写一个简单的操作系统,需要做哪些工作呢?首先你要对操作系统有一个感性的认识:什么是操作系统?简单来说,操作系统是运行在硬件的基础之上,融合了进程控制,内存资源分配,文件系统,外部设备交互等等模块的一个庞然大物,在这些内容的基础上才有我们经常使用的应用程序。那么如果需要自己实现一个操作系统的话,最基础的肯定就是需要从最基础的硬件模块入手,如何在什么都没有的硬件之上开始我们的操作系统..._bochs虚拟机显示图片

android编译ffmpeg+x264-程序员宅基地

android编译ffmpeg+x264编译x264:下载最新版的x264ftp://ftp.videolan.org/pub/videolan/x264/snapshots/1.解压到指定的目录2.切换当前目录为该目录3.创建一个shell脚本build_x264.sh,内容如下:export NDK=/home/robin/桌面/android-nd

Kinect开发之结合Unity3D进行游戏应用开发_使用unity和kinect实现厨房系统-程序员宅基地

转自:http://yacare.iteye.com/blog/1950164最近在用unity3d和Kinect结合开发一个项目,突然间发现了这个博客,感觉其中的Unity3d包太厉害了,挺有意思的,所以推荐给大家。以经本人测试令,本人使用此工程中的脚本,经过分析,去除了其中冗余的脚本,可以实现直接传入数据即可控制三维模型动作,不需要实时打开kinect,可以直接读取之前存录的骨骼点数据_使用unity和kinect实现厨房系统

Android binder驱动中用到的关键结构体-程序员宅基地

1.binder_work 结构体binder_work用来描述待处理的工作项,这些工作项有可能属于一个进程,也有可能属于一个进程的某一个线程。2.binder_node 结构体binder_node用来描述一个binder实体。每一个Service组件在Binder驱动程序中都对应一个Binder实体对象,用来描述它在内核中的状态。3.binder_ref 结构体binder_ref用

PCB板中静电放电的设计与解决方法_pcb静电释放设计-程序员宅基地

在PCB板的设计当中,可以通过分层、恰当的布局布线和安装实现PCB的抗ESD设计。通过调整PCB布局布线,能够很好地防范ESD。*尽可能使用多层PCB,相对于双面PCB而言,地平面和电源平面,以及排列紧密的信号线-地线间距能够减小共模阻抗和感性耦合,使之达到双面PCB的1/10到1/100。对于顶层和底层表面都有元器件、具有很短连接线。来自人体、环境甚至电子设备内部的静电对于精密的半导体芯片会造成..._pcb静电释放设计