双击QListWidget中Item重命名,删除
2017-11-01 20:30
363 查看
从文件夹中读取文件,在QListWidget中按照QComboBox中的后缀名显示不同的文件,并实现对文件的删除,双击QListWidget中的Item进行重命名操作。
首先控件就直接使用拖拽的方式进行布局。
然后点击按钮Browse,(自己设定),实现读取文件夹:
m_BrowsePath定义的成员变量,存储文件路径,方便之后进行操作。
其中的ShowList()代码如下:
然后每次修改Combobox的时候,都调用一个ShowList就可以了。
至此,已经实现了文件夹中的文件都根据自己所需的后缀名显示在ListWidget中了。
下一步要实现双击某一个Item的时候,设置它为可编辑状态,并修改名称。
首先实现双击,设置为可编辑状态:
绑定信号和槽
实现函数
设置成可编辑状态,输入想要保存的文件名,OK。好的,需要重命名了。
但是因为重命名使用的是下面这个,需要知道重命名前后的名称,所以要保存之前的名字。
编辑完之后,调用槽函数来实现重命名,可能命名完就用鼠标点击其他地方,所以用下面这个信号和槽
至此,文件双击Item重命名功能,就实现了。
删除功能就比较简单了。
首先控件就直接使用拖拽的方式进行布局。
然后点击按钮Browse,(自己设定),实现读取文件夹:
m_BrowsePath定义的成员变量,存储文件路径,方便之后进行操作。
m_BrowsePath= QFileDialog::getExistingDirectory(this, tr("Open file"), tr("")); if (m_BrowsePath.length() == 0) { QMessageBox::information(NULL, tr("Path"), tr("You didin't select any files")); } else { ui.lineEdit->setText(m_BrowsePath); ShowList(); }
其中的ShowList()代码如下:
void QFileManagement::ShowList() { if (m_BrowsePath.size() == 0) { return; } QStringList filter; QDir *dir = new QDir(m_BrowsePath); switch (ui.comboBox->currentIndex()) { case all: filter << "*.jpg" << "*.png" << "*.mp3" << "*.wmv"; break; case jpg: case png: case mp3: case wmv: filter << QString("*%0").arg(ui.comboBox->currentText()); break; default: break; } dir->setNameFilters(filter); ui.listWidgetFileName->clear();//显示文件的ListWidget QStringList list = dir->entryList(); ui.listWidgetFileName->addItems(list); delete dir; }
然后每次修改Combobox的时候,都调用一个ShowList就可以了。
至此,已经实现了文件夹中的文件都根据自己所需的后缀名显示在ListWidget中了。
下一步要实现双击某一个Item的时候,设置它为可编辑状态,并修改名称。
首先实现双击,设置为可编辑状态:
绑定信号和槽
connect(ui.listWidgetFileName, SIGNAL(itemDoubleClicked(QListWidgetItem* )), this, SLOT(OnListWidgetDoubleClicked(QListWidgetItem *)));
实现函数
void OnListWidgetDoubleClicked(QListWidgetItem *item) { item->setFlags(item->flags() | Qt::ItemIsEditable); m_RenameIndex = ui.listWidgetFileName->currentRow();//用来保存需要修改名称的index }
设置成可编辑状态,输入想要保存的文件名,OK。好的,需要重命名了。
但是因为重命名使用的是下面这个,需要知道重命名前后的名称,所以要保存之前的名字。
QFile::rename(m_PrevName, m_CurrentName);
编辑完之后,调用槽函数来实现重命名,可能命名完就用鼠标点击其他地方,所以用下面这个信号和槽
connect(ui.listWidgetFileName, SIGNAL(currentRowChanged(int)), this, SLOT(OnListWidgetCurrentListChanged(int))); void OnListWidgetCurrentListChanged(int index) { if (!m_bIsRename) { return; } else { m_bIsRename = false; QString fileName = m_BrowsePath + "\\" +ui.listWidgetFileName->item(m_RenameIndex)->text(); bool ok = QFile::rename(m_PrevName, fileName); if (!ok) { QMessageBox::information(NULL, tr("Error"), tr("Rename Failed")); return; } } }
至此,文件双击Item重命名功能,就实现了。
删除功能就比较简单了。
void QFileManagement::OnpushButtonDelete() { QString deleteFile = ui.listWidgetFileName->item(ui.listWidgetFileName->currentRow())->text(); QMessageBox::StandardButton rb; rb = QMessageBox::question(NULL, tr("Prompt"), tr("Are you sure to Delete the File?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); if (rb == QMessageBox::Yes) { if (!QFile::remove(m_BrowsePath+"\\"+deleteFile)) { ShowMessageBoxInfo("Delete File Failed"); } else { ShowList(); } } }
相关文章推荐
- QT实例:从QListWidget中删除选中的QListWidgetItem
- (CEGUI)DragDropDemo例子的延伸(添加,删除,双击ITEM) -------制作背包系统
- QT实例:从QListWidget中删除选中的QListWidgetItem
- QT实例:从QListWidget中删除选中的QListWidgetItem
- TFS竟然不能删除work item?!
- sql增加字段、删除字段、增加约束、删除约束、修改缺省值、修改字段数据类型、重命名字段、重命名表
- iOS开发_iphone开发_文件系统NSFileManager_如何创建、重命名和删除文件
- listview的item跳转的下一个界面点击删除数据,并返回更新listview
- html中动态的增加和删除item
- WPF Control Hints - ListBox : 怎样在一个ListBoxItem上应用命名Style
- 自己定义滑动删除item的ListView。
- Android listview动态添加删除更新带ProgressBar的Item
- Android RecyclerViewSwipeDismiss:水平、垂直方向的拖曳删除item
- JAVA基础再回首(二十)——File类概述、创建、删除、重命名、判断、获取、文件名称过滤器
- Linux删除名字是乱码的文件、wget下载时重命名
- linux下文件夹的创建、复制、剪切、重命名、清空和删除命令
- RecyclerView使用探索2–仿百度贴吧实现item的触摸移动和删除效果
- Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果
- listview滑动删除item的一个方案
- Git查看、删除、重命名远程分支和tag