¿Cómo llamar al menú en las coordenadas de QTeewidgetItem?
-
11-12-2019 - |
Pregunta
en QT: I Craete A QMENU:
QMenu* popMenu = new QMenu(ui->treeWidget);
y quiero hacerlo por encima del TreeWidgetItem actual, pero lo que solo conozco es:
popMenu->exec(QCursor::pos());
así que si uso:
ui->treeWidget->setCurrentItem(treeWidgetItem);//this is necessary for my program and the current item will be used elsewhere.
El menú se abrirá en la POS de la POS en el mouse, no en el artículo.Este asistente se ve :( ¿Cómo puedo abrir el menú en las coordenadas del elemento actual?
Solución
Estoy seguro de que mi solución es bastante estúpida, pero funciona: Medí la altura de la raíz de QTeewidgetItem como 15, y la altura del niño de QTeewidgettem como 12. El código:
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;
}
y lo uso:
if(isAtItemPos())popMenu->exec(QCursor::pos());
funciona :)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow