2013-11-04 6 views
7

से क्लास चयनकर्ता के साथ स्टाइल टेक्स्ट टेक्स्ट क्षेत्र मैं ग्लोबल स्टाइल शीट के माध्यम से विजेट टेक्स्ट (उदा। एक QLabel) का हिस्सा कैसे बना सकता हूं?वैश्विक क्यूएसएस

उदा। उदाहरण के लिए, foo और बार दोनों लाल होना चाहिए।

#include <QtWidgets/QApplication> 
#include <QtWidgets/QLabel> 

class 
some_label : public QLabel 
{ 
    Q_OBJECT 
public: 
    some_label(QString text = "") : QLabel(NULL) { 
     setText(text); 
     show(); 
    }; 
}; 
#include "main.moc" 

static const char *css = 
     "some_label { color : blue; background : black; }" 
     "span.some_class { color : red; }"; 

int 
main(int argc, char **argv) 
{ 
    QApplication a(argc, argv); 
    a.setStyleSheet(css); 
    some_label label("before " 
        "<span style=\"color:red;\">foo</span> " /* works */ 
        "<span class=\"some_class\">bar</span> " /* fails */ 
        "after"); 
    return a.exec(); 
} 

qmake (क्यूटी 5.1.1) प्रोजेक्ट फाइल:

QT  += widgets 
SOURCES += main.cpp 

Unsatisfactory result

मैं वास्तव में एक समाधान है कि शैली में हार्डकोड के रूप में मैं foo अवधि के साथ किया बचा जाता है की सराहना करेंगे । लक्ष्य के लिए लक्ष्य पूरी तरह से उपयोगकर्ता द्वारा आपूर्ति की गई स्टाइल शीट द्वारा निर्धारित किया जाना है (उदाहरण में css द्वारा दर्शाया गया है)। फिलहाल मैं प्रत्येक तत्व के लिए अलग-अलग लेबल शामिल करने वाले वर्कअराउंड का उपयोग करता हूं जो कि रंगीन है और यह बनाए रखने के लिए एक दुःस्वप्न है।

मैंने कुछ ऑनलाइन स्रोतों के साथ-साथ ब्लैंचेट/समरफील्ड अध्याय 1 9 से परामर्श लिया है, लेकिन वे मुख्य रूप से स्टाइलिंग पूरे विजेट से संबंधित हैं।

उत्तर

4

आप QLabel भार के बाद स्टाइल बदलने की जरूरत नहीं है, तो आप एक प्रणाली है जहाँ आप रंग आप चाहते हैं पाठ की जगह एक केंद्रीकृत शैली फ़ाइल से प्रत्येक शब्द के लिए वसीयत कर सकता है:

// These values come from a central, user-supplied style sheet, etc. 
QString primary = "red"; 
QString secondary = "green"; 

some_label label("before " 
       "<font color=\"" + secondary + "\">foo</font> " 
       "<font color=\"" + primary + "\">bar</font> " 
       "after"); 

इस प्रणाली पढ़ने के लिए थोड़ा मुश्किल है लेकिन यह कई QLabel एस का उपयोग करने में सुधार हो सकता है।

(जैसा कि आपने देखा होगा, Qt doesn't support CSS selection of classes within QLabels।)

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