最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ Qt繪制時(shí)鐘界面

 更新時(shí)間:2021年12月30日 14:03:29   作者:你不懂細(xì)節(jié)  
大家好,本篇文章主要講的是C++ Qt繪制時(shí)鐘界面,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽

首先來看一下效果:

大概就是這樣子,需要注意的是,這里你需要?jiǎng)?chuàng)建一個(gè)基類為Widget的界面來繪制時(shí)鐘,以至于后期你想把這個(gè)時(shí)鐘放到任意一個(gè)界面,你只需要在那個(gè)界面的ui里面添加一個(gè)widget,然后將它提升為這個(gè)時(shí)鐘界面,并設(shè)定它的大小。

widget.h文件

#ifndef WIDGET_H
#define WIDGET_H
 
#include<math.h>
#include<QResizeEvent>
#include<QGroupBox>
#include<QTimer>
#include<QTime>
#include<QPainter>
 
#include <QWidget>
 
namespace Ui {
class Widget;
}
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
protected:
    void paintEvent(QPaintEvent *event);
 
private:
    Ui::Widget *ui;
};
 
#endif // WIDGET_H

widget.cpp文件

#include "widget.h"
#include "ui_widget.h"
 
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    QTimer *timer = new QTimer(this);  //連接信號(hào)與槽
    connect(timer, SIGNAL(timeout()), this, SLOT(update()));
    timer->start(1000);
    //設(shè)置窗體名稱與大小
    setWindowTitle(tr("Clock"));
    ui->setupUi(this);
    resize(350,350);
}
 
Widget::~Widget()
{
    delete ui;
}
 
void Widget::paintEvent(QPaintEvent *event)
{
    static const QPoint hourHand[3] =
    {
        QPoint(5, 14),
        QPoint(-5, 14),
        QPoint(0, -50)
    };
    static const QPoint minuteHand[3] =
    {
        QPoint(5, 14),
        QPoint(-5,14),
        QPoint(0, -70)
    };
    static const QPoint secondHand[3] =
    {
        QPoint(5, 14),
        QPoint(-5, 14),
        QPoint(0, -80)
    };
    static const QPoint line_long[2]=
    {
        QPoint(0,100),
        QPoint(0,80)
    };
    static const QPoint line_short[2]={
        QPoint(0,100),
        QPoint(0,95)
    };
    //繪制的范圍
    int side = qMin(width(), height());
    //獲取當(dāng)前的時(shí)間
    QTime time = QTime::currentTime();
    //聲明用來繪圖用的painter
    QPainter painter(this);
    //繪制的圖像反鋸齒
    painter.setRenderHint(QPainter::Antialiasing);
    //重新定位坐標(biāo)起始點(diǎn),把坐標(biāo)原點(diǎn)放到窗體的中央
    painter.translate(width() / 2, height() / 2);
    //在表盤內(nèi)添加文字(任意)
    //painter.drawText(-75,-120,100,170,Qt::AlignRight,tr("ROLEX"));
    //設(shè)定畫布的邊界
    painter.scale(side / 200.0, side / 200.0);
    //填充邊線設(shè)為黑色,也可以設(shè)置為NoPen
    painter.setPen( Qt::black );
    //畫刷顏色設(shè)定
    painter.setBrush(Qt::black);
    //保存painter的狀態(tài)
    painter.save();
    //設(shè)置painter的旋轉(zhuǎn)角度
    painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)));
    //填充時(shí)針的區(qū)域
    painter.drawConvexPolygon(hourHand, 3);
    painter.restore();
    painter.setPen(Qt::black);
    //12個(gè)個(gè)刻度循環(huán)
    for (int i = 0; i < 12; ++i)
    {
        painter.drawLine(line_long[0],line_long[1]);
        painter.rotate(30.0);
    }
    //繪制分針轉(zhuǎn)角、刻度
    painter.setPen(Qt::black);
    painter.setBrush(Qt::black);
    painter.save();
    painter.rotate(6.0 * (time.minute() + time.second() / 60.0));
    painter.drawConvexPolygon(minuteHand, 3);
    painter.restore();
    painter.setPen(Qt::black);
    for (int j = 0; j < 60; ++j)
    {
        if ((j % 5) != 0)
        painter.drawLine(line_short[0],line_short[1]);
        painter.rotate(6.0);
    }
 
     //繪制分針轉(zhuǎn)角、刻度
    painter.setPen(Qt::black);
    painter.setBrush(Qt::black);
    painter.save();
    painter.rotate(6.0 * (time.minute() + time.second() / 60.0));
    painter.drawConvexPolygon(minuteHand, 3);
    painter.restore();
    painter.setPen(Qt::black);
    for (int j = 0; j < 60; ++j)
    {
        if ((j % 5) != 0)
        painter.drawLine(line_short[0],line_short[1]);
        painter.rotate(6.0);
    }
   //繪制秒針轉(zhuǎn)角
    painter.setPen(Qt::black);
    painter.setBrush(Qt::black);
    painter.save();
    painter.rotate(6.0*time.second());
    painter.drawConvexPolygon(secondHand,3);
    painter.restore();
 
}

main.cpp文件

#include "widget.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

到此這篇關(guān)于C++ Qt繪制時(shí)鐘界面的文章就介紹到這了,更多相關(guān)C++ Qt繪制時(shí)鐘內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

扎兰屯市| 安泽县| 青海省| 玛多县| 青龙| 宜阳县| 车险| 通山县| 上林县| 景宁| 萍乡市| 黑水县| 古田县| 沐川县| 乐都县| 屏东市| 内丘县| 沙田区| 克拉玛依市| 康定县| 类乌齐县| 越西县| 漳浦县| 广汉市| 龙川县| 高邮市| 运城市| 县级市| 简阳市| 田林县| 河间市| 蒙自县| 张家口市| 黔南| 壤塘县| 芜湖县| 沐川县| 藁城市| 山东省| 海淀区| 荥阳市|