2013-03-20 8 views
6

मैं QWidget या QGLWidget का पृष्ठभूमि रंग ढूंढने की कोशिश कर रहा हूं ताकि मैं इसे qglClearColor() के साथ उपयोग कर सकूं ताकि ओपनजीएल भाग विजेट के भीतर मूल रूप से दिखाई दे (उदाहरण के लिए एक काला पृष्ठभूमि)।विजेट पृष्ठभूमि कैसे प्राप्त करें QColor

मुझे लगा कि मैं अपने विजेट के backgroundRole() ला सकता हूं लेकिन मुझे इसे QColor में परिवर्तित करने में समस्याएं आ रही हैं। QPalette::color(QColorRole) है लेकिन यह स्थिर नहीं है और मुझे नहीं पता कि मुझे परिवर्तन करने के लिए QPalette का उदाहरण कैसे बनाना होगा।

+1

क्या आपने एप्लिकेशन-व्यापी पैलेट प्राप्त करने के लिए 'qApp-> palette()' को कॉल करने का प्रयास किया था और फिर 'QPalette :: ब्रश() 'या' QPalette :: color() 'को कॉल किया था? – user2155932

उत्तर

17

उस विजेट के लिए पृष्ठभूमि रंग भूमिका का रंग प्राप्त करने के लिए QWidget::palette().color(QWidget::backgroundRole()) का उपयोग करें। जाहिर है, यह QWidget विरासत में प्राप्त किसी भी वर्ग के साथ भी काम करना चाहिए।

+0

संपादित करें: यह काम करता है, धन्यवाद! –

+0

'qglClearColor' पर आपका कॉल आपके QGLWidget सबक्लास के कन्स्ट्रक्टर में नहीं है? यह intalizeGL, paintGL, या कार्यों के किसी अन्य व्यक्ति में होना चाहिए जिसे केवल आपके OpenGL संदर्भ के बाद बुलाया जा सकता है। –

+0

हां, यह प्रारंभिक जीएल में है। मैं 'glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) जोड़ने के लिए भूल गया; '' चित्र' ('''। –

संबंधित मुद्दे