コンストラクター内
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 という単一のメニュー項目を持つコンテキストメニューが表示されます。私が望むのは、ユーザーがその削除メニューアイテムをクリックするたびに、その QTreeWidgetItem を qtreewidget から削除することだけです。しかし、上記のコードでは、UI の任意の部分をクリックしても、rightclick の後に、回避したい treewidget からそれぞれの QTreeWidgetItem が削除されます。
よろしくお願いします。