【发布时间】:2020-09-14 19:04:53
【问题描述】:
我的 UI 中有一个名为 xml_scripts_textbox 的 QListWidget 和一些项目,当我右键单击 qlistwidget 中的项目时,会出现一个自定义上下文菜单,并且此上下文菜单的选项之一是 @987654323 @,所以当单击它时,我希望 qlistwidget 中的特定项目可以编辑一次,
我该怎么做?
到目前为止我尝试过的代码是
上下文菜单代码
void MainWindow::on_xml_scripts_textbox_customContextMenuRequested(const QPoint& pos)
{
QMenu* rMenu = new QMenu(this);
QAction* edit = new QAction(tr("Edit the List item"), this);
rMenu->addAction(edit);
connect(edit, SIGNAL(triggered()), this, SLOT(edithelp()));
rMenu->exec(cursor().pos());
}
edithelp() 的代码,使列表项可编辑的槽函数
void MainWindow::edithelp()
{
QListWidgetItem* item_1 = ui->xml_scripts_textbox->takeItem(ui->xml_scripts_textbox->currentRow());
item_1->setFlags(Qt::ItemIsEditable); // still not getting editable ?? why ??
}
【问题讨论】:
-
我不认为 QListiWidget::takeItem() 是你需要的。正如文档所说 QListiWidget::takeItem “从列表小部件中的给定行中删除并返回项目”,因此之后该项目不应再位于 QListWidget 内。您应该改用 QListiWidget::itemAt()。
标签: c++ qt qlistwidget qlistwidgetitem