2014-07-05 16 views
5

Kiedy przeglądałem kod źródłowy Qt, nie znalazłem sposobu, w jaki on faktycznie rysuje komponent GUI, ale wiem, że używa OpenGL.W jaki sposób Qt rysuje swoje komponenty GUI (podstawowa idea)?

Chcę wiedzieć, jak biblioteka GUI, jak Qt, rysuje swoje komponenty GUI (np. QPushButton, QWidget)?

Czy ktoś może mi pomóc z podstawowym pomysłem?

+0

Jestem prawie pewien, że po prostu wywołuje OS. To zależy od systemu operacyjnego, czy nie, czy faktycznie jest przyspieszany sprzętowo. Inne części Qt bezpośrednio korzystają z OpenGL. – Ben

Odpowiedz

4

W miejscu Qt projektu:

Qt jest malowanie QtWidgets wykorzystujące QPainter, który używa (zazwyczaj) silnik rastrowych wyciągnąć zawartość. Nie korzysta z natywnych wywołań systemu operacyjnego, poza kilkoma wyjątkami (np. Okno dialogowe plików, które można narysować natywnie lub przy pomocy QtWidgets).

QtQuick jest malowany za pomocą scenegraph, czyli OpenGL. Poza tym nie ma tu żadnych rodzimych systemów operacyjnych.

Myślę, że źle zrozumiałeś (jest kilka znaczeń słowa "rodzimy" w informatyce) postu stackoverflow, lub twoje źródło informacji jest złe.

OK, potem dla jasności: przez "natywny" miałem na myśli używanie rodzimych kontrolek OS, takich jak biblioteka wxWidgets: proszenie OS o narysowanie rodzimego paska przewijania lub pola kombi itd. Qt tego nie robi. Maluje wszystkie widżety i próbuje jedynie naśladować wygląd systemu operacyjnego, na którym działa.

Ale oczywiście rodzi się w nim jakieś rodzime wywołanie systemu operacyjnego, aby faktycznie narysować jakieś piksele na ekranie i otworzyć kontener rodzimego okna. Ale zazwyczaj nie jest to ważne dla programistów interfejsu wysokiego poziomu.

Masz prosty wybór, czy widget powinien być narysowany przez procesor lub GPU: widżety mogą korzystać z różnych metod malowania (natywny, rastrowy, OpenGL, więcej informacji można znaleźć na stronie here! [Qt-project.org]), oraz użytkownik ma wybór, który z nich należy wykorzystać. Większość ludzi tego nie używa, ponieważ domyślne ustawienia działają dobrze.

Dzięki.

Powiązane problemy