2011-09-13 17 views

Odpowiedz

5

Właśnie napisałem mały program, który wywołuje QWidget::mapToGlobal(QPoint(0,0)) na ukrytym widżecie. Stwierdziłem, że pozycja zmieniła się w zależności od tego, czy widget został już wyświetlony na ekranie, zanim zapytałem o jego pozycję.

Dokumentacja QWidget::mapToGlobal() mówi:

Tłumaczy widget koordynować poz globalnych współrzędnych ekranowych. Na przykład mapToGlobal (QPoint (0,0)) podaje globalne współrzędne lewego górnego piksela widgetu.

Czytanie tego wydaje się logiczne, że jeśli widget nie jest widoczny, nie może mieć zagwarantowanej globalnej pozycji na ekranie.

Rzeczywisty wynik wywołania metody wydaje się zależeć od pozycji, w której widżet był ostatnio wyświetlany, jeśli taki istnieje. Tak więc nierozsądnie jest polegać na tym, że zachowanie to jest stabilne w obecnych lub przyszłych wersjach Qt.

Powiązane problemy