2011-03-31 11 views
12

मेरे पास एक क्यूटी स्टाइलशीट वाला QLabel है जो एक अंधेरे पृष्ठभूमि को सेट करता है:स्टाइल शीट का उपयोग कर QLabels में लिंक की उपस्थिति को मैं कैसे अनुकूलित करूं?

QLabel { 
background: black; 
color: white; 
} 

यह ठीक काम करता है जब तक कि मैं एक एम्बेडेड यूआरएल के साथ पाठ जोड़ता हूं और Qt::TextFormat को Qt::RichText पर सेट करता हूं। लिंक डिफ़ॉल्ट गहरे नीले रंग के रूप में प्रदर्शित होता है, जो एक अंधेरे पृष्ठभूमि पर पढ़ने के लिए मुश्किल है।

मैंने इसे स्टाइलशीट के माध्यम से अनुकूलित करने का प्रयास किया है जैसे:

a { color: white; } 
QLabel!visited { color: white; } 

लेकिन इसका कोई प्रभाव नहीं पड़ता है। एक चीज जो काम करने लगती है वह एप्लिकेशन के QPalette को बदल रही है:

QPalette newPal(qApp->palette()); 
newPal.setColor(QPalette::Link, Qt::white); 
newPal.setColor(QPalette::LinkVisited, Qt::white); 
qApp->setPalette(newPal); 

हालांकि इसके लिए रंग को हार्डकोड करने की आवश्यकता है। क्या कोई तरीका है कि मैं स्टाइलशीट से रंग सेट कर सकता हूं?

संपादित करें:

मुझे पैलेट को अनुकूलित करने के साथ एक और समस्या मिली है। अगर मैं अपने विजेट के पैलेट को बस संशोधित करना चाहता हूं (उपरोक्त नमूने में qApp के लिए widget को प्रतिस्थापित करना) तो यह काम नहीं करता है। मैं ऐप में अन्य सभी QLabels को प्रभावित नहीं करना चाहता, तो मैं इस विजेट में पैलेट परिवर्तन को कैसे सीमित करूं?

उत्तर

2

संक्षिप्त उत्तर नहीं है। हाल ही में मुझे यह करना पड़ा।

  1. QLabel!visited काम नहीं करता है क्योंकि क्यूटी ट्रैक नहीं करता है कि QLabel का दौरा किया गया था या नहीं।
  2. QLabel { color: ... } लिंक के लिए काम नहीं करता है। इस मामले में QPallete का उपयोग करने के लिए मुझे कोई सुझाव नहीं मिला है।
+0

मुझे लगता है कि मैं एक ही निष्कर्ष पर आया हूं - मेरी अन्य टिप्पणी देखें –

+4

QLabel()। SetText (' कुछ') – Asi

5

मैं छोटी सफलता के स्पष्ट रूप से QPalette की स्थापना किया है - यदि आप संपूर्ण आवेदन के लिए यह निर्धारित करते हैं, लेकिन आप विजेट में यह सेट नहीं तो अगर यह काम करता है। अंत में, मुझे जो करना है, उसके लिए सबसे आसान चीज़ QTextBrowser का उपयोग करती है जो HTML के subset का समर्थन करती है। मैं तो एक नियमित रूप से CSS स्टाइलशीट का उपयोग कर लिंक का रंग रद्द कर सकते थे:

QTextBrowser browser; 
// IMPORTANT! - set the stylesheet before the content 
browser->document()->setDefaultStyleSheet("a {color: white; }"); 
browser->setText(html); 
5

एक तरह से लिंक के भीतरी <span> को style="color: whatever" या एक वर्ग को जोड़ने के लिए है। मैंने अभी तक यह पता नहीं लगाया है कि इसे पूरे एप्लिकेशन पर कैसे लागू किया जाए लेकिन यह एक अच्छी शुरुआत है।

+0

यह एकमात्र वास्तविक उत्तर है। ध्यान दें कि क्यूटी डिजाइनर स्पष्ट रूप से प्रत्येक लिंक को रंगता प्रतीत होता है, जो आपकी वैश्विक स्टाइलशीट में किसी भी डिफ़ॉल्ट को ओवरराइड करता है। –

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