вот как я сделал: если элемент верхний и только один, то одно контекстное меню, если элемента два и они вторые (ниже верхнего) то другое контекстное меню
работает не совсем так как я хотел бы, а именно что у самого верхнего может быть два чилдрена, и по второму он не кликает, зато по первому от самого верхнего кликает.
void MainForm::treeContextMenu(const QPoint& pos)
{
QTreeWidgetItem* item = treeWidget->currentItem();
//количество выделенных элементов
int countItem = treeWidget->selectedItems().count();
if (countItem == 1)
{
int index = treeWidget->indexOfTopLevelItem(item);
if (!item || index == -1) {
return;
}
QMenu menu;
menu.addAction(closeDocumentAct);
QAction* a = menu.exec(QCursor::pos());
}
else if (countItem == 2)
{
QTreeWidgetItem *itemAbove = treeWidget->itemAbove(item); //это итем выше итема
int index = treeWidget->indexOfTopLevelItem(itemAbove);
if (!item || index == -1) {
return;
}
QMenu menu;
menu.addAction(statCompareAct);
QAction* a = menu.exec(QCursor::pos());
}
}