2012-01-30 20 views
7

मेरे एप्लिकेशन में, पूरे एप्लिकेशन के लिए स्टाइलशीट एप्लिकेशन में लोड की गई संसाधन फ़ाइल से ली जाती है।विजेट का ऑब्जेक्टनाम अपडेट करना स्वचालित रूप से स्टाइल को अपडेट नहीं करता है

मैं दो स्टाइलशीट एक QListWidget के लिए वहाँ परिभाषित किया गया है:

QListWidget#Good{ 
..some color properties 
} 

QListWidget#Bad { 
..soem different color properties 
} 

एक रूप में, मेरा QListWidget का ऑब्जेक्ट नाम "अच्छा" है, इसलिए यह #good शैली का पालन करता है। रनटाइम के दौरान, मेरे पास एक ऐसा मामला है जहां मैं "सेटऑब्जेक्टनाम" को "खराब" करना चाहता हूं और यूआई में शैली बदल गई है।

मैं दो बातों पर ध्यान दिया है:

  1. केवल बुला "SetObjectName (" बुरा ");" शैली से शैली को बदल नहीं है ...
  2. एकमात्र समय "SetObjectName (" खराब ");" काम करता है अगर QListWidget युक्त विजेट के निर्माता से बुलाया जाता है।

जाहिर है, मुझे कुछ "अपडेट स्टाइल" चरण याद आ रहा है। ध्यान दें कि कोड में "setStyleSheet" नहीं हो सकता है, यह QSS फ़ाइल से आना चाहिए।

मुझे क्या याद आ रही है?

उत्तर

9

यह हल हो गया। कॉलिंग:

style()->unpolish(theWidget); 
style()->polish(theWidget); 

मेरी विजेट पर objectname में परिवर्तन के बाद (setObjectName) चाल किया था।

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