QT:QTreeView文件系统右键菜单实现重命名的问题

实现类似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));
}
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值