双击QListWidget中Item重命名,删除

该博客介绍了如何在Qt环境中,使用QListWidget控件展示文件,并实现双击文件项进行重命名以及删除功能。通过读取文件夹,根据QComboBox选择的后缀过滤文件显示,双击Item进入编辑状态,完成重命名,同时提供了删除文件的实现方法。
摘要由CSDN通过智能技术生成

从文件夹中读取文件,在QListWidget中按照QComboBox中的后缀名显示不同的文件,并实现对文件的删除,双击QListWidget中的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.
  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以在 QListWidgetItem设置编辑模式,然后在编辑完成时保存新的文本。为了实现在鼠标移动到另一位置时取消重命名,您需要在编辑模式下实现失去焦点的事件处理。可以参考以下代码: ```python from PyQt5.QtWidgets import QListWidget, QListWidgetItem, QApplication, QLineEdit from PyQt5.QtCore import Qt class MyListWidget(QListWidget): def __init__(self): super().__init__() self.edit_item = None self.itemDoubleClicked.connect(self.on_item_double_click) def on_item_double_click(self, item): self.edit_item = item self.edit_item.setFlags(self.edit_item.flags() | Qt.ItemIsEditable) self.edit_item.setSelected(True) self.edit_item.setFlags(self.edit_item.flags() & ~Qt.ItemIsSelectable) self.edit_item.setFlags(self.edit_item.flags() & ~Qt.ItemIsEnabled) self.edit_item.setFlags(self.edit_item.flags() & ~Qt.ItemIsDragEnabled) self.edit_item.setFlags(self.edit_item.flags() & ~Qt.ItemIsDropEnabled) self.edit_item.setFlags(self.edit_item.flags() & ~Qt.ItemIsUserCheckable) self.edit_item.setFlags(self.edit_item.flags() & ~Qt.ItemIsTristate) self.edit_item.setTextAlignment(Qt.AlignLeft) self.edit_item.setFlags(self.edit_item.flags() | Qt.ItemIsSelectable) self.edit_item.setFlags(self.edit_item.flags() | Qt.ItemIsEnabled) self.edit_item.setFlags(self.edit_item.flags() | Qt.ItemIsDragEnabled) self.edit_item.setFlags(self.edit_item.flags() | Qt.ItemIsDropEnabled) self.edit_item.setFlags(self.edit_item.flags() | Qt.ItemIsUserCheckable) self.edit_item.setFlags(self.edit_item.flags() | Qt.ItemIsTristate) self.edit_item.startEdit() def focusOutEvent(self, event): if self.edit_item is not None: self.edit_item.setFlags(self.edit_item.flags() & ~Qt.ItemIsEditable) self.edit_item.setFlags(self.edit_item.flags() | Qt.ItemIsSelectable) self.edit_item.setFlags(self.edit_item.flags() | Qt.ItemIsEnabled) self.edit_item.setFlags(self.edit_item.flags() | Qt.ItemIsDragEnabled) self.edit_item.setFlags(self.edit_item.flags() | Qt.ItemIsDropEnabled) self.edit_item.setFlags(self.edit_item.flags() | Qt.ItemIsUserCheckable) self.edit_item.setFlags(self.edit_item.flags() | Qt.ItemIsTristate) self.edit_item = None super().focusOutEvent(event) if __name__ == '__main__': app = QApplication([]) list_widget = MyListWidget() item1 = QListWidgetItem('Item 1') item2 = QListWidgetItem('Item 2') list_widget.addItem(item1) list_widget.addItem(item2) list_widget.show() app.exec_() ``` 在这个例子,我们重载了 MyListWidget 类的 on_item_double_click 方法来处理双击事件。在这个方法,我们将选的 QListWidgetItem 设置为可编辑模式,并将其它标志位设置为不可用。我们还重载了 MyListWidget 类的 focusOutEvent 方法,以便在编辑模式下失去焦点时取消重命名
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值