C++ 如何使用自定义上下文菜单编辑QListwidgetItem?

C++ 如何使用自定义上下文菜单编辑QListwidgetItem?,c++,qt,qlistwidget,qlistwidgetitem,C++,Qt,Qlistwidget,Qlistwidgetitem,我有一个名为xml\u scripts\u textbox的QListWidget,在我的UI中有一些项目,当我右键单击QListWidget中的一个项目时,会出现一个自定义上下文菜单,该上下文菜单的一个选项是“编辑列表项目”,因此当单击该选项时,我希望qlistwidget中的特定项可以编辑一次 我该怎么做 到目前为止,我尝试的代码是 上下文菜单代码 void MainWindow::on_xml_scripts_textbox_customContextMenuRequested(const

我有一个名为
xml\u scripts\u textbox
QListWidget
,在我的UI中有一些项目,当我右键单击QListWidget中的一个项目时,会出现一个自定义上下文菜单,该上下文菜单的一个选项是
“编辑列表项目”
,因此当单击该选项时,我希望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()
,该插槽函数将使listitem可编辑

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 ??
}
试试这个:

void MainWindow::edithelp()
{
    QListWidgetItem* item_1 = ui->xml_scripts_textbox->currentItem();
    if (item_1)
        ui->xml_scripts_textbox->editItem(item_1);
}

是否已将项目设置为可编辑

item->setFlags(item->flags() | Qt::ItemIsEditable)

我认为QListWidget::takeItem()不是您所需要的。正如文档所说,QListWidget::takeItem“从列表小部件中的给定行删除并返回该项”,因此此后该项不应再位于QListWidget中。您应该改为尝试QListWidget::itemAt()。目前,我正在这样一个对话框的帮助下进行此操作
QListWidgetItem*item\u 1=ui->xml\u scripts\u textbox->takeItem(ui->xml\u scripts\u textbox->currentRow();QString custom_line=QInputDialog::getText(这是“编辑命令”,“\n输入更改:\n”,QLineEdit::Normal,item_1->text());项目1->设置文本(自定义行);ui->xml\u脚本\u文本框->添加项(项目1)