Seite 1 von 1

Finde globalPositin von Widget nicht

Verfasst: 14. Dezember 2006 19:07
von soulsofpetro
Hallo Leute,
ich habe folgendes Problem und hoffe dass der Eine oder Andere mir helfen kann.

Ich habe ein Widget in einem Gridlayout positioniert.
Nun will ich seine Globale Position.
Dafür habe ich in meiner Klasse, in der ich das Widget erzeuge eine Methode:

QPoint Character::getGlobalPosition()
{
return mapToGlobal(QPoint(0,0));
}

wenn ich nun diese Methode auf ein Objekt aufrufe bekomme ich als Position immer (0,0). Egal auf welches Widget ich sie aufrufe.
wenn ich in die Methode: return mapFromGlobal(QPoint(4,6)); reinschreibe, bekomme ich auch den Punkt (4,6).
Was bedeutet, dass er eigentlich überhaupt nicht mapt.

Weiß jemand von euch woran das liegen könnte?

Dazu muss ich sagen, dass ich alle Widgets in eine GridLayout positioniert habe ohne feste Koordinaten zu geben. Ich habe lediglich die Position im Grid angegeben.

Danke.

Verfasst: 14. Dezember 2006 23:38
von upsala
rufst du mapToGlobal vom QWidget im Grid auf oder von dessen parent?

Verfasst: 15. Dezember 2006 09:38
von soulsofpetro
Ich rufe mapToGlobal vom QWidget im Grid und nicht vom Parent.
ist das der fehler?

Verfasst: 15. Dezember 2006 14:11
von dontinelli
Der fehler ist, dass du einen QPoint mit den Koordinaten 0,0 resp. 4,6 erstellst. Du musst als Argument aber die Positionen des Widgets übergeben. Versuch es doch mal damit:

Code: Alles auswählen

QPoint Character::getGlobalPosition() 
{ 
return mapToGlobal(widget.pos()); 
}
LG
Don Tinelli

Verfasst: 15. Dezember 2006 15:16
von soulsofpetro
wenn

QPoint Character::getGlobalPosition()
{
return mapToGlobal(QPoint(0,0));
}

aufgerufen wird, dann ist mit QPoint(0,0) die stelle von dem aktuellem objekt gemeint.
ich weiß aber was du meinst. allerdings habe ich auch
return mapToGlobal(this->pos());
ausprobiert und es klappt trotzdem nicht.