Qt - viewport do window

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?

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.

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?

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

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.

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.

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