जवाबों:
सबसे अच्छा और अनुशंसित तरीका है क्यूटी स्टाइल शीट का उपयोग करना ।
एक का पाठ रंग और पृष्ठभूमि रंग बदलने के लिए QLabel, यहाँ मैं क्या करूँगा:
QLabel* pLabel = new QLabel;
pLabel->setStyleSheet("QLabel { background-color : red; color : blue; }");
आप क्यूटी स्टाइल शीट्स का उपयोग करने से भी बच सकते हैं और QPaletteअपने रंग बदल सकते हैं QLabel, लेकिन आपको विभिन्न प्लेटफार्मों और / या शैलियों पर अलग-अलग परिणाम मिल सकते हैं।
क्यूटी प्रलेखन राज्यों के रूप में:
क्यूप्लेट का उपयोग करना सभी शैलियों के लिए काम करने की गारंटी नहीं है, क्योंकि शैली लेखक विभिन्न प्लेटफार्मों के दिशानिर्देशों और देशी थीम इंजन द्वारा प्रतिबंधित हैं।
लेकिन आप ऐसा कुछ कर सकते हैं:
QPalette palette = ui->pLabel->palette();
palette.setColor(ui->pLabel->backgroundRole(), Qt::yellow);
palette.setColor(ui->pLabel->foregroundRole(), Qt::yellow);
ui->pLabel->setPalette(palette);
लेकिन जैसा कि मैंने कहा, मैं दृढ़ता से सुझाव देता हूं कि पैलेट का उपयोग न करें और क्यूटी स्टाइल शीट के लिए जाएं।
colorविशेषता अप्रभावी है। केवल HTML के माध्यम से <font color="#FFFFFF">...</font>मैं फ़ॉन्ट रंग सेट करने में सक्षम था (इस मामले में सफेद करने के लिए।
color: ;एक 'रीसेट' के रूप में उपयोग करना ऐसा लगता है, लेकिन क्या यह अच्छा अभ्यास है, या कोई बेहतर तरीका है?
आप QPalette का उपयोग कर सकते हैं, हालाँकि आपको setAutoFillBackground(true);बैकग्राउंड कलर को इनेबल करने के लिए सेट करना होगा
QPalette sample_palette;
sample_palette.setColor(QPalette::Window, Qt::white);
sample_palette.setColor(QPalette::WindowText, Qt::blue);
sample_label->setAutoFillBackground(true);
sample_label->setPalette(sample_palette);
sample_label->setText("What ever text");
यह विंडोज और उबंटू पर ठीक काम करता है, मैंने किसी अन्य ओएस के साथ नहीं खेला है।
नोट: कृपया अधिक विवरण के लिए QPalette , color role अनुभाग देखें
मैं इस जवाब को जोड़ता हूं क्योंकि मुझे लगता है कि यह किसी के लिए भी उपयोगी हो सकता है।
मैं अपने पेंटिंग एप्लीकेशन में कलर डिस्प्ले लेबल्स के लिए RGBA कलर्स (यानी RGB वैल्यू विथ ट्रांसपेरेंसी) की समस्या में कदम रखता हूं।
जैसा कि मैं पहले उत्तर में आया था, मैं RGBA रंग सेट करने में असमर्थ था। मैंने भी कोशिश की है जैसे:
myLabel.setStyleSheet("QLabel { background-color : %s"%color.name())
जहां colorआरजीबीए रंग है।
इसलिए, मेरा गंदा समाधान इसकी सीमा को भरने वाली विधि को विस्तारित करने QLabelऔर ओवरराइड करने के लिए था paintEvent()।
आज, मैंने ओपन किया है qt-assistantऔर शैली संदर्भ गुणों की सूची पढ़ी है । प्रभावी रूप से, इसका एक उदाहरण है जो निम्नलिखित बताता है:
QLineEdit { background-color: rgb(255, 0, 0) }
उदाहरण के रूप में नीचे दिए गए कोड की तरह कुछ करने में मेरा दिमाग खुल जाता है:
myLabel= QLabel()
myLabel.setAutoFillBackground(True) # This is important!!
color = QtGui.QColor(233, 10, 150)
alpha = 140
values = "{r}, {g}, {b}, {a}".format(r = color.red(),
g = color.green(),
b = color.blue(),
a = alpha
)
myLabel.setStyleSheet("QLabel { background-color: rgba("+values+"); }")
ध्यान दें कि इसमें setAutoFillBackground()सेट किया Falseगया काम नहीं करेगा।
सादर,
केवल एक चीज जो मेरे लिए काम करती थी वह थी html।
और मैंने पाया कि किसी भी प्रोग्रामेटिक एप्रोच की तुलना में इसे करना ज्यादा आसान है।
निम्न कोड एक कॉलर द्वारा पारित पैरामीटर के आधार पर पाठ का रंग बदलता है।
enum {msg_info, msg_notify, msg_alert};
:
:
void bits::sendMessage(QString& line, int level)
{
QTextCursor cursor = ui->messages->textCursor();
QString alertHtml = "<font color=\"DeepPink\">";
QString notifyHtml = "<font color=\"Lime\">";
QString infoHtml = "<font color=\"Aqua\">";
QString endHtml = "</font><br>";
switch(level)
{
case msg_alert: line = alertHtml % line; break;
case msg_notify: line = notifyHtml % line; break;
case msg_info: line = infoHtml % line; break;
default: line = infoHtml % line; break;
}
line = line % endHtml;
ui->messages->insertHtml(line);
cursor.movePosition(QTextCursor::End);
ui->messages->setTextCursor(cursor);
}
<font/>टैग के अंदर कुछ अन्य फैंसी सामान रखने की अनुमति देता है (और HTML लोगों के लिए कुछ और परिचित है: डी) और न केवल एक रंग इसलिए यह आपको अधिक लचीलापन देता है।
किसी भी विजेट के रंगों के बारे में किसी भी सुविधा को सेट करने का सबसे अच्छा तरीका है कि QPalette का उपयोग करें ।
और जो आप ढूंढ रहे हैं उसे ढूंढने का सबसे आसान तरीका है क्यूटी डिज़ाइनर को खोलना और क्यूबेल का पैलेट सेट करना और जेनरेट किए गए कोड को चेक करना।
QColorDialog *dialog = new QColorDialog(this);
QColor color= dialog->getColor();
QVariant variant= color;
QString colcode = variant.toString();
ui->label->setStyleSheet("QLabel { background-color :"+colcode+" ; color : blue; }");
getColor()विधि चयनित रंग देता है। आप लेबल रंग का उपयोग करके बदल सकते हैंstylesheet