内部构造函数
connect(ui.UserSpecificMaterial_treeWidget, SIGNAL(customContextMenuRequested(const QPoint &)),this, SLOT(ContMenu(const QPoint &)));
内槽
void MyContMenu::ContMenu(const QPoint &pos)
{
QTreeWidgetItem *item = ui.UserSpecificMaterial_treeWidget->itemAt(pos);
if (!item)
return;
QMenu *menu = new QMenu(ui.UserSpecificMaterial_treeWidget);
myAction = menu->addAction("Remove");
myAction->setIcon(QIcon(QString::fromUtf8("Resources/Remove.png")));
myAction->setShortcut(tr("Ctrl+D"));
myAction->setStatusTip(tr("Remove the respective material from the User DB"));
menu->exec(ui.UserSpecificMaterial_treeWidget->viewport()->mapToGlobal(pos));
/---code to remove the item ./ }
在上面的代码中,每当我右键单击 QTreeWidgetItem 时,它都会向我显示包含一个名为 Remove 的菜单项的上下文菜单。我想要的是,只要用户当时单击该删除菜单项,它就应该从 qtreewidget 中删除该 QTreeWidgetItem 。但是在 rigtclick 之后的上述代码中,即使我单击 UI 的任何部分,它也会从 treewidget 中删除相应的 QTreeWidgetItem,这是我想避免的。
提前致谢。