Qt - viewport do window

2011-09-13 23:43
michal1990_123
0

Witam. Rysuje za pomocą QPainter prostokąt z setWindow(-50, -50, 100, 100), a następnie sprawdzam event->pos() z mousePressEvent i otrzymuje QPoint. Za pomocą containsPoint() z QPolygon chce sprawdzić czy kliknięcie miało miejsce w prostokącie ale wspólrzędne są w różnych układach. Jak przejść z viewport na window i sprawdzić czy kliknięcie nastapiło w prostokącie?

Pozostało 580 znaków

2011-09-14 00:01
0

QMouseEvent::pos() zwraca współrzędne liczone względem lewego górnego roku okna w którym klik nastąpił,globalPos() z kolei zwraca współrzędne na ekranie.


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]

Pozostało 580 znaków

2011-09-14 00:28
michal1990_123
0

Znaczy się rozchodzi się o to, że:

painter.setWindow( -50, -50, 100, 100);
painter.drawRect( -10, -10, 20, 20);

Tu mam wartości od -50 do 50

QPoint point = event->pos();

A tutaj otrzymuje punkty np. 200, 300.

W jaki sposób mogę otrzymać punkty z event->pos() w układzie window a nie vievport?

Pozostało 580 znaków

2011-09-14 11:14
0

Hmmm to co znalazłem najlepszego w dokumentacji to QPainter::combinedTransform()
A powiedz dokładniej,co ty takiego robisz że się chcesz bawić z ustawianiem windowa i viewporta na qpainterze?Bo może nie tędy droga


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]

Pozostało 580 znaków

2011-09-14 12:33
michal1990_123
0

Dziękuje za odpowiedzi. Mam do narysowania okno, a punkty figur mam zdefiniowane w tym układzie 'window' czyli od -50 do 50. Sprawdzam potem gdzie nastąpiło kliknięcie i podświetlam figurę. Ale żeby sprawdzić 'containsPoint' potrzebuje współrzedne w jedynym układzie.

Pozostało 580 znaków

2011-09-14 13:49
0

Hmmmm a nie wziąłeś pod uwagę,aby użyć Graphics Frameworka?QGraphicsView i QGraphicsScene wraz z QGraphicsItemem mają konwersję koordynatów rozwiązaną zdecydowanie przyjaźniej.
Poza tym używając tego frameworka to kliknięcie doleci już do samej figury,przez co całkiem ominą cię obliczenia jego punktu.


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
edytowany 1x, ostatnio: MasterBLB, 2011-09-14 13:51

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0