欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Qt繪制簡單時鐘

 更新時間:2020年06月16日 17:10:51   作者:(^0^)陌路  
這篇文章主要為大家詳細(xì)介紹了Qt繪制簡單時鐘效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Qt繪制簡單時鐘的具體代碼,供大家參考,具體內(nèi)容如下

概述

(1)基本原理

利用簡單的幾何圖形繪出表盤和指針,然后基于系統(tǒng)時間調(diào)整指針偏轉(zhuǎn)角度達(dá)到模擬時鐘的效果。
其中可以加上自己喜歡的背景資源,設(shè)計不同風(fēng)格的時鐘。

(2)部分函數(shù)說明

①調(diào)色和填充

painter.setBrush(Qt::red); //設(shè)置畫刷,填充顏色(紅色)
painter.setPen(Qt::red);  //設(shè)置畫筆,外圍輪廓顏色(紅色)

②抗鋸齒(減少圖形外圍鋸齒狀,使線條平滑)

painter.setRenderHint(QPainter::Antialiasing,true);

③自動保存與恢復(fù)

painter.save();  //保存屬性
painter.restore(); //屬性恢復(fù)

核心代碼

dialog.h文件

class Dialog : public QDialog
{
 Q_OBJECT

public:
 Dialog(QWidget *parent = nullptr);
 ~Dialog();

 void Dialog::paintEvent(QPaintEvent *); //函數(shù)聲明

private:
 Ui::Dialog *ui;
};

頭文件

#include <QPainter>
#include <QPoint>
#include <QTime>
#include <QTimer>
#include <QPixmap>
#include <math.h>

指針參數(shù)(第一個QPoint前可以加static)

QPoint sec[4]={QPoint(0,-80),QPoint(2,0),QPoint(0,8),QPoint(-2,0)};
QPoint min[4]={QPoint(0,-62),QPoint(4,0),QPoint(0,10),QPoint(-4,0)};
QPoint hour[4]={QPoint(0,-48),QPoint(5,0),QPoint(0,11),QPoint(-5,0)};

關(guān)聯(lián)函數(shù)

Dialog::Dialog(QWidget *parent)
 : QDialog(parent)
 , ui(new Ui::Dialog)
{
 ui->setupUi(this);
 resize(300,300);

 QTimer * timer = new QTimer(this);
 timer->start(1000); //確定刷新時間(此處為1000毫秒=1秒)
 connect(timer,SIGNAL(timeout()),this,SLOT(update())); //update()為自動刷新界面,使指針可以不停轉(zhuǎn)動
}

繪圖函數(shù)(注意:只要時、分、秒三個指針任意完成一個,則其余兩個只需修改指針旋轉(zhuǎn)角度規(guī)則,其余屬性相同即可)

void Dialog::paintEvent(QPaintEvent *){
 QPainter painter(this);

 //時鐘背景
 QRect q1(20,20,0.5*512,0.5*512);
 QRect q2(0,0,512,512);
 QPixmap map(":/b/ClockBack/clockback.png");
 painter.drawPixmap(q1,map,q2);

 QTime time=QTime::currentTime(); //調(diào)用系統(tǒng)時間

 //表盤
 painter.setRenderHint(QPainter::Antialiasing,true); //抗鋸齒,平滑化
 painter.setPen(QPen(Qt::white,6,Qt::SolidLine));  //調(diào)色
 painter.translate(50,50);
 painter.drawEllipse(0,0,198,198);

 //指針屬性
 painter.translate(99,99);

 //秒針
 painter.setRenderHint(QPainter::Antialiasing,true);
 painter.setBrush(Qt::red); //設(shè)置畫刷,填充顏色
 painter.setPen(Qt::red);  //設(shè)置畫筆,外圍輪廓顏色
 painter.save();    //保存屬性
 painter.rotate(6.0*time.second());
 painter.drawPolygon(sec,4); //繪制指針(繪制幾何圖形函數(shù))
 painter.restore();   //屬性恢復(fù)

 //分針(同秒針)
 painter.setRenderHint(QPainter::Antialiasing,true);
 painter.setBrush(Qt::white);
 painter.setPen(Qt::white);
 painter.save();
 painter.rotate(6.0*time.minute()+time.second()/60.0);
 painter.drawPolygon(min,4);
 painter.restore();

 //時針(同秒針)
 painter.setRenderHint(QPainter::Antialiasing,true);
 painter.setBrush(Qt::black);
 painter.setPen(Qt::black);
 painter.save();
 painter.rotate(30.0*time.hour()+time.minute()/60.0);
 painter.drawPolygon(hour,4);
 painter.restore();

 //表盤刻度
 //長刻度(整點刻度)
 for(int i=1;i<=12;i++){
  painter.rotate(30);
  painter.drawLine(0,-100,0,-85);
 }
 
 //短刻度
 for(int i=1;i<=60;i++){
  painter.rotate(6);
  painter.drawLine(0,-94,0,-90);
 }
}

背景與效果圖

1、這里分享我自己采用的背景

2、效果圖

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++實現(xiàn)高并發(fā)異步定時器

    C++實現(xiàn)高并發(fā)異步定時器

    這篇文章主要為大家詳細(xì)介紹了如何利用C++實現(xiàn)高并發(fā)異步定時器,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • C語言音樂播放器實例代碼

    C語言音樂播放器實例代碼

    文章給大家分享了用C語言音樂播放器的實例代碼,對此有需要的朋友參考學(xué)習(xí)下。
    2018-07-07
  • C語言求矩陣的各列元素之和的代碼示例

    C語言求矩陣的各列元素之和的代碼示例

    這篇文章主要介紹了C語言求矩陣的各列元素之和的代碼示例,這也是經(jīng)常作為競賽和計算機(jī)專業(yè)考試的基礎(chǔ)練習(xí)出現(xiàn)的題目,需要的朋友可以參考下
    2016-07-07
  • Opencv?視頻讀取與寫入的實現(xiàn)示例

    Opencv?視頻讀取與寫入的實現(xiàn)示例

    本文將介紹如何使用OpenCV進(jìn)行視頻讀寫。通過閱讀本文,您將了解如何讀取視頻文件、處理視頻幀、寫入視頻文件等操作,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • C++ 控制臺彈出文件管理對話框案例

    C++ 控制臺彈出文件管理對話框案例

    這篇文章主要介紹了C++ 控制臺彈出文件管理對話框案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • C語言動態(tài)內(nèi)存函數(shù)詳解

    C語言動態(tài)內(nèi)存函數(shù)詳解

    這篇文章主要介紹了C語言動態(tài)內(nèi)存函數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • c++中cin實現(xiàn)輸入字符串方式

    c++中cin實現(xiàn)輸入字符串方式

    這篇文章主要介紹了c++中cin實現(xiàn)輸入字符串方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 基于C++實現(xiàn)酒店管理系統(tǒng)

    基于C++實現(xiàn)酒店管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了基于C++實現(xiàn)酒店管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • CreateCompatibleDC()函數(shù)案例詳解

    CreateCompatibleDC()函數(shù)案例詳解

    這篇文章主要介紹了CreateCompatibleDC()函數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Qt?加載?libjpeg?庫出現(xiàn)“長跳轉(zhuǎn)已經(jīng)運行”錯誤問題解決

    Qt?加載?libjpeg?庫出現(xiàn)“長跳轉(zhuǎn)已經(jīng)運行”錯誤問題解決

    這篇文章主要介紹了Qt?加載?libjpeg?庫出現(xiàn)“長跳轉(zhuǎn)已經(jīng)運行”錯誤,本文給大家分享完美解決方案,需要的朋友可以參考下
    2023-04-04

最新評論