Bagaimana cara mengatur warna teks dan latar belakang QLabel
?
180
Cara terbaik dan yang disarankan adalah menggunakan Qt Style Sheet .
Untuk mengubah warna teks dan warna latar belakang QLabel
, inilah yang akan saya lakukan:
QLabel* pLabel = new QLabel;
pLabel->setStyleSheet("QLabel { background-color : red; color : blue; }");
Anda juga dapat menghindari penggunaan Lembar Gaya Qt dan mengubah QPalette
warna Anda QLabel
, tetapi Anda mungkin mendapatkan hasil berbeda pada platform dan / atau gaya yang berbeda.
Seperti yang dinyatakan oleh dokumentasi Qt:
Menggunakan QPalette tidak dijamin berfungsi untuk semua gaya, karena penulis gaya dibatasi oleh pedoman platform yang berbeda dan oleh mesin tema asli.
Tetapi Anda dapat melakukan sesuatu seperti ini:
QPalette palette = ui->pLabel->palette();
palette.setColor(ui->pLabel->backgroundRole(), Qt::yellow);
palette.setColor(ui->pLabel->foregroundRole(), Qt::yellow);
ui->pLabel->setPalette(palette);
Tapi seperti yang saya katakan, saya sangat menyarankan untuk tidak menggunakan palet dan pergi untuk Qt Style Sheet.
color
atribut tidak efektif. Hanya melalui HTML<font color="#FFFFFF">...</font>
saya dapat mengatur warna font (menjadi putih dalam kasus ini.color: ;
sebagai 'reset' tampaknya melakukannya, tetapi apakah ini praktik yang baik, atau apakah ada metode yang lebih baik?Anda dapat menggunakan QPalette, namun Anda harus mengatur
setAutoFillBackground(true);
untuk mengaktifkan warna latar belakangIni berfungsi dengan baik pada Windows dan Ubuntu, saya belum bermain dengan OS lain.
Catatan: Silakan lihat QPalette , bagian peran warna untuk detail lebih lanjut
sumber
Saya menambahkan jawaban ini karena saya pikir ini bisa bermanfaat bagi siapa saja.
Saya masuk ke masalah pengaturan warna RGBA (yaitu, warna RGB dengan nilai Alpha untuk transparansi) untuk label tampilan warna dalam aplikasi lukisan saya.
Ketika saya menemukan jawaban pertama, saya tidak dapat mengatur warna RGBA. Saya juga sudah mencoba hal-hal seperti:
myLabel.setStyleSheet("QLabel { background-color : %s"%color.name())
di mana
color
warna RGBA.Jadi, solusi kotor saya adalah memperluas
QLabel
dan menggantipaintEvent()
metode mengisi recting recting-nya.Hari ini, saya telah membuka
qt-assistant
dan membaca daftar properti referensi gaya . Untungnya, ada contoh yang menyatakan berikut ini:QLineEdit { background-color: rgb(255, 0, 0) }
Itulah yang membuka pikiran saya dalam melakukan sesuatu seperti kode di bawah ini, sebagai contoh:
Perhatikan bahwa
setAutoFillBackground()
pengaturanFalse
tidak akan membuatnya berfungsi.Salam,
sumber
Satu-satunya hal yang bekerja untuk saya adalah html.
Dan saya merasa ini jauh lebih mudah dilakukan daripada pendekatan programatik mana pun.
Kode berikut mengubah warna teks berdasarkan parameter yang dilewatkan oleh pemanggil.
sumber
<font/>
tag (dan merupakan sesuatu yang lebih akrab bagi orang-orang HTML: D) dan bukan hanya warna karena itu memberi Anda fleksibilitas yang lebih besar.Cara terbaik untuk mengatur fitur apa pun tentang warna widget apa pun adalah dengan menggunakan QPalette .
Dan cara termudah untuk menemukan apa yang Anda cari adalah membuka Qt Designer dan mengatur palet dari QLabel dan memeriksa kode yang dihasilkan.
sumber
Yang ini bekerja dengan sempurna
getColor()
metode mengembalikan warna yang dipilih. Anda dapat mengubah warna label menggunakanstylesheet
sumber