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?

¿Fue útil?

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
scroll top