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)代码>