資源簡介
比較實用的Qt指示燈,封裝類可以容易的加入到項目中使用。
代碼片段和文件信息
#include?“qcw_indicatorlamp.h“
#include?
QcwIndicatorLamp::QcwIndicatorLamp(QWidget?*parent):?QWidget(parent)
{
m_alarm?=?false;
resize(100?100);
}
void?QcwIndicatorLamp::paintEvent(QPaintEvent?*)
{
QPainter?painter(this);
painter.setRenderHint(QPainter::Antialiasing);? /*?使用反鋸齒(如果可用)?*/
painter.translate(width()?/?2?height()?/?2); /*?坐標變換為窗體中心?*/
int?side?=?qMin(width()?height());
painter.scale(side?/?200.0?side?/?200.0); /*?比例縮放?*/
painter.setPen(Qt::NoPen);
????int?radius?=?100;
?
????/*?外邊框?*/
????QLinearGradient?lg1(0?-radius?0?radius);
????lg1.setColorAt(0?QColor(255?255?255));
????lg1.setColorAt(1?QColor(166?166?166));
????painter.setBrush(lg1);
????painter.drawEllipse(-radius?-radius?radius?<1?radius?<1);
????/*?內邊框?*/
????radius?-=?13;
????QLinearGradient?lg2(0?-radius?0?radius);
????lg2.setColorAt(0?QColor(166?166?166));
????lg2.setColorAt(1?QColor(255?255?255));
????painter.setBrush(lg2);
????painter.drawEllipse(-radius?-radius?radius?<1?radius?<1);
/*?內部指示顏色?*/
????radius?-=?4;
????QRadialGradient?rg(0?0?radius);
if?(m_alarm)
{
rg.setColorAt(0?QColor(245?0?0));
rg.setColorAt(0.6?QColor(210?0?0));
rg.setColorAt(1?QColor(166?0?0));
}
else
{
rg.setColorAt(0?QColor(0?245?0));
rg.setColorAt(0.6?QColor(0?210?0));
rg.setColorAt(1?QColor(0?166?0));
}
????painter.setBrush(rg);
????painter.drawEllipse(-radius?-radius?radius?<1?radius?<1);
}
void?QcwIndicatorLamp::setAlarm(bool?alarm)
{
m_alarm?=?alarm;
update();
}
- 上一篇:基于Qt的整數按位反轉實現
- 下一篇:Qt 開源動態坐標帶時間標非qwt實時曲線
評論
共有 條評論