千家信息网

C++中Qt如何绘制时钟界面

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家分享的是有关C++中Qt如何绘制时钟界面的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先来看一下效果:大概就是这样子,需要注意的是,这里你需要创建一个基类为
千家信息网最后更新 2026年11月02日C++中Qt如何绘制时钟界面

这篇文章给大家分享的是有关C++中Qt如何绘制时钟界面的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

首先来看一下效果:

大概就是这样子,需要注意的是,这里你需要创建一个基类为Widget的界面来绘制时钟,以至于后期你想把这个时钟放到任意一个界面,你只需要在那个界面的ui里面添加一个widget,然后将它提升为这个时钟界面,并设定它的大小。

widget.h文件

#ifndef WIDGET_H#define WIDGET_H #include#include#include#include#include#include #include  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);  //连接信号与槽    connect(timer, SIGNAL(timeout()), this, SLOT(update()));    timer->start(1000);    //设置窗体名称与大小    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());    //获取当前的时间    QTime time = QTime::currentTime();    //声明用来绘图用的painter    QPainter painter(this);    //绘制的图像反锯齿    painter.setRenderHint(QPainter::Antialiasing);    //重新定位坐标起始点,把坐标原点放到窗体的中央    painter.translate(width() / 2, height() / 2);    //在表盘内添加文字(任意)    //painter.drawText(-75,-120,100,170,Qt::AlignRight,tr("ROLEX"));    //设定画布的边界    painter.scale(side / 200.0, side / 200.0);    //填充边线设为黑色,也可以设置为NoPen    painter.setPen( Qt::black );    //画刷颜色设定    painter.setBrush(Qt::black);    //保存painter的状态    painter.save();    //设置painter的旋转角度    painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)));    //填充时针的区域    painter.drawConvexPolygon(hourHand, 3);    painter.restore();    painter.setPen(Qt::black);    //12个个刻度循环    for (int i = 0; i < 12; ++i)    {        painter.drawLine(line_long[0],line_long[1]);        painter.rotate(30.0);    }    //绘制分针转角、刻度    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);    }      //绘制分针转角、刻度    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);    }   //绘制秒针转角    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  int main(int argc, char *argv[]){    QApplication a(argc, argv);    Widget w;    w.show();    return a.exec();}

感谢各位的阅读!关于"C++中Qt如何绘制时钟界面"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

界面 时钟 刻度 文件 转角 C++ 内容 分针 坐标 大小 更多 窗体 篇文章 不错 实用 中央 信号 区域 原点 名称 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 哈尔滨大商圈互联网科技有限公司 科技信息互联网 金融科技 互联网金融 互联网与新科技 互联网与未来科技 银川新华互联网科技学校地址 宜昌元轩互联网科技有限公司 速维有品互联网信息科技(苏州)有限公司 工业互联网等科技实现智能化赋能 明优互联网科技有限公司 黑云互联网科技有限公司 上海互联网科技公司ppt 本届互联网大会上的黑科技 江苏互联网科技小贷 2021世界互联网领先科技成果发布 容联科技互联网电商 唯美互联网科技 美国五大互联网科技公司市值多少 互联网科技对化妆品行业 宁波允成互联网科技有限公司 重生之互联网科技帝国 中资互联网科技 米客互联网科技 互联网 视角下的科技创新 宁波青枫互联网科技有限公司 互联网科技有哪些公司 上海京穆互联网科技有限公司 领航科技大厦互联网公司 容联科技互联网电商 平安好医生打造互联网科技医疗
0