前言
需要在界面上實(shí)時(shí)顯示設(shè)備的狀態(tài),希望通過指示燈來顯示,例如綠色代表正常,紅色代表異常。
實(shí)現(xiàn)步驟
首先添加幾個(gè)QLabel控件,下圖添加了四個(gè)QLabel控件。對(duì)于QLabel,雙擊可以修改其text,在屬性欄可以修改其objectName,修改led1、led2的objectName為label_led1、label_led2。
使用自定義函數(shù)setLED來實(shí)現(xiàn)LED燈。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-629546.html
// 該函數(shù)將label控件變成一個(gè)圓形指示燈,需要指定顏色color以及直徑size
// color 0:grey 1:red 2:green 3:yellow
// size 單位是像素
setLED(QLabel* label, int color, int size)
{
// 將label中的文字清空
label->setText("");
// 先設(shè)置矩形大小
// 如果ui界面設(shè)置的label大小比最小寬度和高度小,矩形將被設(shè)置為最小寬度和最小高度;
// 如果ui界面設(shè)置的label大小比最小寬度和高度大,矩形將被設(shè)置為最大寬度和最大高度;
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
// 再設(shè)置邊界形狀及邊框
QString border_radius = QString("border-radius: %1px;").arg(size/2); // 邊框是圓角,半徑為size/2
QString border = QString("border:1px solid black;"); // 邊框?yàn)?px黑色
// 最后設(shè)置背景顏色
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);
}
在需要改變LED燈顏色的地方調(diào)用setLED即可。為了演示,我新建了MainWindow工程,在MainWindow類的構(gòu)造函數(shù)中直接調(diào)用,運(yùn)行程序時(shí)便會(huì)改變LED顏色。
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setLED(ui->label_led1, 1, 16);
setLED(ui->label_led2, 2, 16);
}
?
————————————————
版權(quán)聲明:本文為CSDN博主「Fourier_1024」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Fourier_1024/article/details/113517982文章來源:http://www.zghlxwxcb.cn/news/detail-629546.html
?
到了這里,關(guān)于qt 指示燈 狀態(tài)燈 紅綠燈 LED燈:使用QLabel實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!