为了实现用LED灯显示某个特殊状态,并以不同颜色来区分不同状态,封装以下函数:
void setLED(QLabel* label, int color, int size)
{
// 将label中的文字清空
label->setText("");
// 先设置矩形大小
// 如果ui界面设置的label大小比最小宽度和高度小,矩形将被设置为最小宽度和最小高度;
// 如果ui界面设置的label大小比最小宽度和高度大,矩形将被设置为最大宽度和最大高度;
QString min_width = QString("min-width: %1px;").arg(size); // 最小宽度:size
QString min_height = QString("min-height: %1px;").arg(size); // 最小高度:size
QString max_width = QString("max-width: %1px;").arg(size); // 最小宽度:size
QString max_height = QString("max-height: %1px;").arg(size); // 最小高度:size
// 再设置边界形状及边框
QString border_radius = QString("border-radius: %1px;").arg(size/2); // 边框是圆角,半径为size/2
QString border = QString("border:1px solid black;"); // 边框为1px黑色
// 最后设置背景颜色
QString background = "background-color:";
switch (color) {
case 0:
// 灰色
background += "rgb(190,190,190)";
break;
case 1:
// 红色
background += "rgb(255,0,0)";
break;
case 2:
// 绿色
background += "rgb(0,255,0)";
break;
case 3:
// 黄色
background += "rgb(255,255,0)";
break;
default:
break;
}
const QString SheetStyle = min_width + min_height + max_width + max_height + border_radius + border + background;
label->setStyleSheet(SheetStyle);
}
只需调用以上函数来修改并赋值创建的QLabel控件,不同状态下切换不同颜色即可。
只需注意函数void setLED(QLabel* label, int color, int size)的三个形参的相关赋值。