QLCDNumber设置背景色和显示数字颜色

时间:2022-01-06 14:49:34
//LCD时间显示
QLCDNumber *m_pLcdTime = new QLCDNumber(this);
//设置显示几个数字
m_pLcdTime->setDigitCount(19);
//设置数字字体:Outline,轮廓突出,颜色为背景色;Filled,内部填充型,颜色为黑色;Flat,平面型
m_pLcdTime->setSegmentStyle(QLCDNumber::Flat);
//调色板
QPalette lcdpat = m_pLcdTime->palette();
/*设置颜色,整体背景颜色 颜色蓝色,此函数的第一个参数可以设置多种。如文本、按钮按钮文字、多种*/
lcdpat.setColor(QPalette::Normal,QPalette::WindowText,Qt::red);
//设置当前窗口的调色板
m_pLcdTime->setPalette(lcdpat);
//设置背景色
m_pLcdTime->setStyleSheet("background-color: yellow");
m_pLcdTime->display(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));

设置数字颜色时要注意: 函数setSegmentStyle(QLCDNumber::Flat)中选择Flat属性,否则在setColor()设置数字颜色时不生效
设置背景色直接用setStyleSheet()函数设定就可以了。


--------------------------------------------------------------------------------
void frmShowAPI::InitForm()
{

int icoWidth = 100;
int icoHeight = 20;
ui->cboxColor->setSizeAdjustPolicy(QComboBox::AdjustToContents);
colorList = QColor::colorNames();

foreach (QString color, colorList) {
QPixmap pix(QSize(icoWidth, icoHeight));
pix.fill(color);
ui->cboxColor->addItem(QIcon(pix), color);
ui->cboxColor->setIconSize(QSize(icoWidth, icoHeight));
}

connect(ui->cboxColor, SIGNAL(currentIndexChanged(int)), this, SLOT(ChangeColor()));
}

void frmShowAPI::ChangeColor()
{
QString colorName = colorList.at(ui->cboxColor->currentIndex());
QString qss = QString("QLCDNumber{background-color: rgb(0, 0, 0);color:%1;}").arg(colorName);
ui->lcdNumber->setStyleSheet(qss);
}