我正在處理一個示例應用程序,其中需要禁用複選框的文本,但未選中該複選框並在選中時啓用它。禁用/啓用QCheckBox文本
代碼:
if(ui->checkBox->isChecked() == true)
{
// Enable the text of the checkbox
}
else
{
// Disable the text of the checkbox
}
我已經通過各種文章看了,但我還沒有找到合適的解決方案。
我正在處理一個示例應用程序,其中需要禁用複選框的文本,但未選中該複選框並在選中時啓用它。禁用/啓用QCheckBox文本
代碼:
if(ui->checkBox->isChecked() == true)
{
// Enable the text of the checkbox
}
else
{
// Disable the text of the checkbox
}
我已經通過各種文章看了,但我還沒有找到合適的解決方案。
對於所有窗口小部件:
ui->setStyleSheet(
"QCheckBox:checked {
{color: black;}
}
QCheckBox:unchecked {
{color: grey;}
}"
)
編輯:
正如在評論中提及,使其與自定義主題,則可以使樣式查詢palette :
QPalette my_palette = ui->palette()
QColor my_active_color = my_palette.color(QPalette::Active, QPalette::Text);
QColor my_disabled_color = my_palette.color(QPalette::Disabled, QPalette::Text);
QString my_style =
QString("QCheckBox:checked { {color: rgb(%1, %2, %3);} } "
"QCheckBox:unchecked { {color: rgb(%4, %5, %6);}}")
.arg(my_active_color.red())
.arg(my_active_color.green())
.arg(my_active_color.blue())
.arg(my_disabled_color.red())
.arg(my_disabled_color.green())
.arg(my_disabled_color.blue());
ui->setStyleSheet(my_style);
請注意,id沒有嘗試過,它可能有任何錯字,但你明白了。
如果用戶使用白色文本的自定義配色方案會發生什麼?如果你蒙皮一些小部件,你應該整個應用程序的皮膚,使一切都是一致的。此處不能使用硬編碼顏色,應從當前調色板中獲取啓用和禁用的文本顏色。 – Paul 2013-04-24 11:15:43
@Trompa:我試過了:'ui-> checkBox-> setStyleSheet(「QCheckBox :: indicator:checked {{color:black;}} QCheckBox :: indicator:unchecked {{color:grey;}}」);'但它似乎並沒有工作..... – Gojira 2013-04-24 11:17:33
感謝您的幫助Trompa :) – Gojira 2013-04-24 11:29:50
我得到了解決方案。這是我如何實現它:
ui->checkBox->setStyleSheet("QCheckBox:checked{color: black;} QCheckBox:unchecked{color: grey;}");
所以,你不需要指標部分...壞Qt文檔...我會編輯我的答案,然後,以防其他人來解決這個問題 – Trompa 2013-04-24 12:46:41
你是什麼意思的「禁用文本」,它是使文本「灰色」? – 2013-04-24 11:08:31
@ YamHon.CHAN:是的......基本上灰色的文字 – Gojira 2013-04-24 11:09:21