Yanıtlar:
En iyi ve önerilen yol Qt Stil Sayfasını kullanmaktır .
A'nın metin rengini ve arka plan rengini değiştirmek için QLabel
yapacağım şey:
QLabel* pLabel = new QLabel;
pLabel->setStyleSheet("QLabel { background-color : red; color : blue; }");
Ayrıca Qt Stil Sayfalarını kullanmaktan kaçınabilir ve QPalette
renklerinizi değiştirebilirsiniz QLabel
, ancak farklı platformlarda ve / veya stillerde farklı sonuçlar alabilirsiniz.
Qt belgelerinde belirtildiği gibi:
Stil yazarları farklı platformların yönergeleri ve yerel tema motoru tarafından kısıtlandığından, QPalette kullanmanın tüm stiller için çalışması garanti edilmez.
Ama böyle bir şey yapabilirsiniz:
QPalette palette = ui->pLabel->palette();
palette.setColor(ui->pLabel->backgroundRole(), Qt::yellow);
palette.setColor(ui->pLabel->foregroundRole(), Qt::yellow);
ui->pLabel->setPalette(palette);
Ama dediğim gibi, paleti kullanmamanızı ve Qt Stil Sayfasını kullanmamanızı şiddetle tavsiye ederim.
color
Nitelik etkisizdir. Sadece HTML ile <font color="#FFFFFF">...</font>
yazı tipi rengini ayarlayabildim (bu durumda beyaza.
color: ;
'Sıfırlama' olarak kullanmak bunu yapıyor gibi görünüyor, ancak bu iyi bir uygulama mı yoksa daha iyi bir yöntem var mı?
QPalette'i kullanabilirsiniz, ancak setAutoFillBackground(true);
arka plan rengini etkinleştirmek için ayarlamanız gerekir
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");
Windows ve Ubuntu'da iyi çalışıyor, başka bir işletim sistemi ile oynamadım.
Not: Daha fazla bilgi için lütfen QPalette , renk rolü bölümüne bakın
Bu cevabı ekliyorum çünkü bence herkes için yararlı olabilir.
Boyama uygulamamdaki renkli ekran etiketleri için RGBA renklerini (saydamlık için Alfa değerine sahip RGB rengi) ayarlama sorununa giriyorum .
İlk cevaba geldiğimde bir RGBA rengi ayarlayamadım. Ayrıca şöyle şeyler denedim:
myLabel.setStyleSheet("QLabel { background-color : %s"%color.name())
burada color
bir RGBA rengi.
Yani, kirli çözümüm sınırlayıcı rektifi dolduran yöntemi genişletmek QLabel
ve geçersiz paintEvent()
kılmaktı.
Bugün, stil referans özellikleri listesini açtım qt-assistant
ve okudum . Neyse ki, aşağıdakileri belirten bir örneği var:
QLineEdit { background-color: rgb(255, 0, 0) }
Bu, aşağıdaki kod gibi bir şey yapmak için fikrimi açmak, örnek olarak:
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+"); }")
Not setAutoFillBackground()
içinde set False
çalışması yapmayacağız.
Saygılarımızla,
Benim için çalışan tek şey html oldu.
Ve bunu programlı yaklaşımlardan çok daha kolay buldum.
Aşağıdaki kod, arayan tarafından geçirilen bir parametreye göre metin rengini değiştirir.
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/>
etiketin içine başka süslü şeyler koymanıza izin veriyor (ve HTML kişilerine daha tanıdık bir şey: D) ve sadece bir renk değil, bu nedenle size daha fazla esneklik sağlıyor.
Herhangi bir widget'ın renkleri ile ilgili herhangi bir özelliği ayarlamanın en iyi yolu QPalette kullanmaktır .
Ve aradığınızı bulmanın en kolay yolu Qt Designer'ı açmak ve bir QLabel'in paletini ayarlamak ve oluşturulan kodu kontrol etmektir.
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()
yöntemi seçilen rengi döndürür. Kullanarak etiket rengini değiştirebilirsinizstylesheet