在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.
菜单将弹出鼠标单击位置的pos而不是该项目。这看起来向导:( 如何在当前项目的坐标处弹出菜单?
答案 0 :(得分: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());
有效:)