Как открыть меню в координатах QTreeWidgetItem?

В QT: я создаю QMenu:

QMenu* popMenu = new QMenu(ui->treeWidget);

и я хочу добавить это выше текущего treewidgetitem, но я знаю только следующее:

popMenu->exec(QCursor::pos());

Так что, если я использую:

ui->treeWidget->setCurrentItem(treeWidgetItem);//this is necessary for my program and the current item will be used elsewhere.

Меню будет отображаться в позиции нажатой кнопки мыши, а не в пункте. Это выглядит волшебником 🙁
Как я могу открыть меню в координатах текущего элемента?

0

Решение

Я уверен, что мое решение довольно глупо, но оно работает:
Я измерил высоту корневого QTreeWidgetItem как 15, а высоту дочернего QTreeWidgetItem как 12.
Код:

bool MainWindow::isAtItemPos()
{
QPoint treeWidgetPos = ui->treeWidget->mapToGlobal(QPoint(0,0));
QPoint curPos = QCursor::pos();
int verPos = curPos.ry() - treeWidgetPos.ry();
int verMax = 15 + 12*rootItem->childCount();
if(verPos <= verMax)return true;
else return false;
}

И я использую это:

if(isAtItemPos())popMenu->exec(QCursor::pos());

Оно работает 🙂

0

Другие решения

Других решений пока нет …