資源簡介
在ubuntu系統(tǒng)中利用proc文件系統(tǒng)實(shí)現(xiàn)的監(jiān)聽器
ubuntu版本是17.10
qt版本是5.8
具體用法在我的博客里
代碼片段和文件信息
#include?“clockwidget.h“
#include?“ui_clockwidget.h“
#include?
#include?
#include?
#include?
#include
#include
#include
#include?
clockWidget::clockWidget(QWidget?*parent)?:
????QWidget(parent)
????ui(new?Ui::clockWidget)
{
????ui->setupUi(this);
????usage_value=0;
????QTimer?*timer?=?new?QTimer(this);
????????connect(timer?SIGNAL(timeout())?this?SLOT(update()));
????????timer->start(1000);
}
clockWidget::~clockWidget()
{
????delete?ui;
}
QRectF?clockWidget::textRectF(double?radius?int?pointSize?double?angle)
{
????QRectF?rectF;
????rectF.setX(radius*qCos(angle*3.14/180.0)?-?pointSize*2);
????rectF.setY(radius*qSin(angle*3.14/180.0)?-?pointSize/2.0);
????rectF.setWidth(pointSize*4);
????rectF.setHeight(pointSize);
????return?rectF;
}
void?clockWidget::paintEvent(QPaintEvent?*event)
{
????Q_UNUSED(event);
????//?針位置?-?多邊形
????static?const?QPoint?hourHand[3]?=?{
????????QPoint(7?8)
????????QPoint(-7?8)
????????QPoint(0?-30)
????};
????static?const?QPoint?minuteHand[3]?=?{
????????QPoint(7?8)
????????QPoint(-7?8)
????????QPoint(0?-65)
????};
????static?const?QPoint?secondHand[3]?=?{
????????QPoint(7?8)
????????QPoint(-7?8)
????????QPoint(0?-80)
????};
????//?針顏色
????QColor?hourColor(200?100?0?200);
????QColor?minuteColor(0?127?127?150);
????QColor?secondColor(0?160?230?150);
????int?side?=?qMin(width()?height());
????QTime?time?=?QTime::currentTime();
????QPainter?painter(this);
????painter.setRenderHint(QPainter::Antialiasing);
????//?平移坐標(biāo)系原點(diǎn)至中心點(diǎn)
????painter.translate(width()?/?2?height()?/?2);
????//?縮放
????painter.scale(side?/?200.0?side?/?200.0);
????//?繪制時(shí)針
????painter.setPen(Qt::NoPen);
????painter.setBrush(hourColor);
????painter.save();
????//?每圈360°?=?12h?即:旋轉(zhuǎn)角度?=?小時(shí)數(shù)?*?30°
????painter.restore();
????painter.setPen(hourColor);
????//?繪制小時(shí)線?(360度?/?12?=?30度)
????for?(int?i?=?0;?i?12;?++i)?{
????????painter.drawLine(88?0?96?0);
????????painter.rotate(30.0);
????}
????int?radius?=?100;
????QFont?font?=?painter.font();
????font.setBold(true);
????painter.setFont(font);
????int?pointSize?=?font.pointSize();
????//?繪制小時(shí)文本
????int?nHour?=?0;
????for?(int?i?=?0;?i?11;?++i)?{
????????nHour?=?i?;
//????????if?(nHour?>?10)
//????????????nHour?-=?10;
????????painter.drawText(textRectF(radius*0.8?pointSize?(i+4)?*?30)?Qt::AlignCenter?QString::number(nHour*10));
????}
????//?繪制分針
????painter.setPen(Qt::NoPen);
????painter.setBrush(minuteColor);
????painter.save();
????//?每圈360°?=?60m?即:旋轉(zhuǎn)角度?=?分鐘數(shù)?*?6°
????painter.restore();
????painter.setPen(minuteColor);
????//?繪制分鐘線?(360度?/?60?=?6度)
????for?(int?j?=?0;?j?60;?++j)?{
????????if?((j?%?5)?!=?0)
????????????painter.drawLine(92?0?96?0);
????????painter.rotate(6.0);
????}
????//?繪制秒針
????painter.setPen(Qt::NoPen);
????painter.setBrush(secondColor);
????painter.save();
????//?每圈360°?=?60s?即:旋轉(zhuǎn)角度?=?秒數(shù)?*?6°
????painter.rotate((float)300/100?*?usage_value-150);?????????
評(píng)論
共有 條評(píng)論