c++ - QListWidget 的 editItem() 输出“编辑:编辑失败”
问题描述
我正在尝试将一个项目添加到 QListWidget,选择该项目,然后开始编辑新项目。
该项目被添加,它被选中,但该行没有被带入 QLineEdit,或者它试图使用的任何东西。
这是我的小部件的代码,在“m_addButton”的连接下有相关代码:
Sequencer::Sequencer(QWidget* parent) :
QWidget(parent)
{
m_list = new QListWidget();
m_addButton = new QPushButton("Add Step");
m_removeButton = new QPushButton("Remove Step");
connect(m_addButton, &QPushButton::clicked, this, [&]()
{
m_list->addItem(""); // This part works,
m_list->setCurrentItem(m_list->item(m_list->count() - 1)); // This part works...
m_list->editItem(m_list->currentItem()); // This part puts out "edit: editing failed" into the console.
});
connect(m_removeButton, &QPushButton::clicked, this, [&]()
{
if (!m_list->selectedItems().isEmpty())
{
qDeleteAll(m_list->selectedItems());
}
});
QHBoxLayout* hLayout = new QHBoxLayout();
hLayout->addStretch();
hLayout->addWidget(m_addButton);
hLayout->addWidget(m_removeButton);
QVBoxLayout* vLayout = new QVBoxLayout();
vLayout->addWidget(m_list);
vLayout->addLayout(hLayout);
setLayout(vLayout);
}
解决方案
默认情况下 aQListWidgetItem
是不可编辑的,所以如果你想要它,你必须启用该Qt::ItemIsEditable
标志:
connect(m_addButton, &QPushButton::clicked, this, [&]()
{
QListWidgetItem *item = new QListWidgetItem;
item->setFlags(item->flags() | Qt::ItemIsEditable); # enable
m_list->addItem(item);
m_list->setCurrentItem(item);
m_list->editItem(item);
});
推荐阅读
- arcgis-js-api - 从 hitTest() 返回的几何在用作查询几何时抛出“无效的查询参数”
- python - 根据前一行值对 Pandas Dataframe 进行排序
- excel - 查找满足一定条件的重复值,如果没有找到,查找下一个重复值的条件
- python - ValueError:太多值无法用 Python 中的元组列表解包(预期为 2)
- synchronization - 容器中的文件更改无法触发 Dropbox 同步
- python - 查找矩阵中每一列的中位数
- python - Django 从 NodeMCU ESP8266HTTPClient 接收 POST 数据
- ruby-on-rails - Ruby on Rails - dyld:未加载库:中止陷阱:6
- java - JVM中的“服务线程”是什么
- mysql - 如何通过 SQL 导出布尔值