hi,
habe das nun wie folgt umgestellt:
Code:
bool CategoryTable::eventFilter(QObject *watched, QEvent *event)
{
if(watched == horizontalHeader())
{
switch(event->type())
{
case Event::ContextMenu:
if((columnPos(numCols()-1)+columnWidth(numCols()-1))>=mapFromGlobal(QCursor::pos()).x())
{
setCurrentCell(currentRow(), columnAt(mapFromGlobal(QCursor::pos()).x()));
mHeaderPopupMenu->popup(QCursor::pos());
}
break;
default: break;
}
}
return QTable::eventFilter(watched, event);
}
Der folgende Code gibt, wenn ich auf das rechte Ende der letzten Spalte klicke, 400, 100, 531, 527 aus.
Code:
QString tmp="";
tmp.sprintf("%d, %d, %d, %d", columnPos(numCols()-1),columnWidth(numCols()-1),(QCursor::pos().x()), mapFromGlobal(QCursor::pos()).x());
qDebug(tmp); // gibt: 400, 100, 531, 527
Die mapFromGlobal-Koordinate unterscheidet sich im X-Wert nur um 4 Pixel und es fehlen immer noch 27 bis zur richtigen Erkennung.
Woran liegt das?
Tschau Gartenzwerg
Lesezeichen