2013-03-20 23 views
6

Próbuję ustalić kolor tła QWidget lub QGLWidget, dzięki czemu mogę go użyć z qglClearColor(), aby część OpenGL pojawiła się natywnie w widgecie (bez np. Czarnego tła).Jak uzyskać tło widżetu QColor

Pomyślałem, że mogę pobrać backgroundRole() mojego widżetu, ale mam problemy z konwersją go na QColor. Jest QPalette::color(QColorRole), ale nie jest statyczny i nie mam pojęcia, jak utworzyć wystąpienie QPalette, aby przeprowadzić transformację.

+1

Czy próbowałeś wywołać 'qApp-> palette()', aby uzyskać paletę w całej aplikacji, a następnie wywołać 'QPalette :: brush()' lub 'QPalette :: color()'? – user2155932

Odpowiedz

17

Użyj QWidget::palette().color(QWidget::backgroundRole()), aby otrzymać kolor roli koloru tła dla tego widgetu. Oczywiście powinno to również działać z każdą klasą, która dziedziczy QWidget.

+0

Edytuj: działa, dzięki! –

+0

Twoje połączenie z 'qglClearColor' NIE jest w konstruktorze podklasy QGLWidget? Powinien to być inializeGL, paintGL lub jakakolwiek inna funkcja, która może być wywołana tylko PO ustawieniu twojego kontekstu OpenGL. –

+0

Tak, jest w initializeGL. Zapomniałem dodać 'glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);' to 'paintG()'. –