如果为空,则从 QListWidget 中删除可编辑项目
Remove editable item from QListWidget if empty
我正在使用Qt 4.8.6。
我有一个QListWidget
.当用户单击">添加">按钮时,将在列表末尾插入一个新项目,并启动该项目文本的版本:
void slot_add_item()
{
auto* item = new QListWidgetItem(QString());
item->setFlags(item->flags() | Qt::ItemIsEditable);
listWidget->addItem(item);
listWidget->setCurrentItem(item);
listWidget->editItem(item);
}
基于此评论,我正在收听commitData
信号,以便在用户完成编辑项目时捕获,并在项目的文本为空时将其删除:
connect(
listWidget->itemDelegate(), SIGNAL(commitData(QWidget*)),
SLOT(slot_item_edited(QWidget*)));
...
void slot_item_edited(QWidget* widget)
{
const QString path = reinterpret_cast<QLineEdit*>(widget)->text();
if (path.isEmpty())
delete listWidget->currentItem();
}
但是,这不会捕获用户使用 Escape 键取消编辑的情况:在这种情况下,不会(预期地(调用slot_item_edited()
,也不会删除(空(项。
在这种情况下如何删除该项目的任何想法?
您可以连接到委托的closeEditor信号而不是commitData
信号:当编辑器关闭时closeEditor
信号,无论是否将任何新数据输入到模型中。
相关文章:
- 将数组的地址分配给变量并删除
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C/C++编译器通常会删除重复的库吗
- 从链接列表c++中删除一个项目
- C++如何通过用户输入删除列表元素
- 为什么在C++中使用私有复制构造函数与删除复制构造函数
- 是否需要删除包含对象的"pair"?
- 如果为空,则从 QListWidget 中删除可编辑项目
- CRUD(添加/查看/编辑/删除/查看所有记录)
- 当我按Enter或在其区域外单击鼠标时,如何从可编辑的Qcombobox中删除光标
- 从队列中编辑元素而不将其删除
- 删除/编辑 ATL COM DLL 属性/方法
- 是否可以使用十六进制编辑器从exe文件中删除代码?(c++)
- 如何创建-编辑-删除 excel 文件
- 如何从windows编辑控件的格式中删除逗号?(C++)
- 编辑/删除受保护的注册表键值
- Eclipse:编辑工具链(删除构建步骤,为CUDA创建共享库)
- 在visual studio 2010 c++中删除或编辑列表视图
- c++如何编辑URL(删除部分)
- 链表数据编辑删除整个链表