C++中Qt如何绘制时钟界面
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章给大家分享的是有关C++中Qt如何绘制时钟界面的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先来看一下效果:大概就是这样子,需要注意的是,这里你需要创建一个基类为
千家信息网最后更新 2025年02月01日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"#includeint main(int argc, char *argv[]){ QApplication a(argc, argv); Widget w; w.show(); return a.exec();}
感谢各位的阅读!关于"C++中Qt如何绘制时钟界面"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
界面
时钟
刻度
文件
转角
C++
内容
分针
坐标
大小
更多
窗体
篇文章
不错
实用
中央
信号
区域
原点
名称
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发运行平台的约束
网上购物系统数据库的需求分析
php简历软件开发环境
防沉迷网络安全教育手抄报
网络安全工程工作总结
山西土地gis系统软件开发公司
华为5885 v3服务器
qq的加密方式网络安全
生产企业数据库系统设计
水晶易表 数据库
r9000p做软件开发可以吗
蓝牙软件开发多少钱
河南睿航软件开发有限公司
阿里云数据库热备
流水施工和网络技术的作用
服务器变更申请单
已成为网络安全国家战略
斗牛软件开发
网络安全网络文明小贴士
关于网络安全的问题有哪些
开讲啦网络安全教育课堂
服务器漏扫报价
龙华专业网络安全运维
数据库实施怎么做
维拓科技互联网
甘肃量化积分管理软件开发电话
推荐的企业网络安全解决方案
怎么追踪服务器在哪
医院网络安全管理
信息监理软件开发月报