2013-03-20 36 views
6

Tôi đang cố gắng tìm màu nền của QWidget hoặc QGLWidget để tôi có thể sử dụng nó với qglClearColor() để làm cho phần OpenGL xuất hiện tự nhiên trong tiện ích (không có ví dụ nền đen).Cách lấy nền của tiện ích QColor

Tôi đã tìm thấy mình có thể tìm nạp backgroundRole() tiện ích con của mình nhưng tôi đang gặp sự cố khi chuyển đổi nó thành một số QColor. Có QPalette::color(QColorRole) nhưng nó không phải là tĩnh và tôi không có ý tưởng làm thế nào tôi sẽ phải tạo ra một thể hiện của QPalette để làm việc chuyển đổi.

+1

Bạn đã thử gọi 'qApp-> palette()' để lấy bảng màu ứng dụng và sau đó gọi 'QPalette :: brush() 'hoặc' QPalette :: color() '? – user2155932

Trả lời

17

Sử dụng QWidget::palette().color(QWidget::backgroundRole()) để nhận màu của vai trò màu nền cho tiện ích đó. Rõ ràng, điều này cũng sẽ làm việc với bất kỳ lớp nào thừa hưởng QWidget.

+0

Chỉnh sửa: nó hoạt động, cảm ơn! –

+0

Cuộc gọi của bạn tới 'qglClearColor' KHÔNG ở trong hàm tạo của lớp con QGLWidget của bạn phải không? Nó phải ở dạng intializeGL, paintGL hoặc bất kỳ một hàm nào khác chỉ có thể được gọi sau khi bối cảnh OpenGL của bạn được thiết lập. –

+0

Có, nó đang ở trong initializeGL. Tôi quên thêm 'glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);' vào 'paintG()'. –

Các vấn đề liên quan