C++中Qt如何绘制时钟界面
发表于:2024-10-04 作者:千家信息网编辑
千家信息网最后更新 2024年10月04日,这篇文章给大家分享的是有关C++中Qt如何绘制时钟界面的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先来看一下效果:大概就是这样子,需要注意的是,这里你需要创建一个基类为
千家信息网最后更新 2024年10月04日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安全错误
数据库的锁怎样保障安全
艾尔登法环连接服务器崩溃
有什么好的软件开发管理
名词解释分布式数据库
网络安全是什么行业
老电脑如何改成服务器
服务器双网不通硬件咋排查
微型计算机中的关系数据库
网络安全接单项目
数据库设计工厂车间管理
http从服务器下载文件
惠普服务器金牌代理
java服务器端环境搭建
服务器dellR340怎么开机
上海市场计算机网络技术服务活动
汇丰软件开发工资多少
扫码自动录入数据库
软件开发工作工资多少
计算机网络技术it
软件开发微信红包
网络安全防范体系结构
软件开发助理工程师做什么
本地服务器映射端口安全吗
思科网络技术学院网课
为什么网络安全缺人
武汉维护网络安全
和田app软件开发
农产品追溯平台软件开发价格
中小学生网络安全竞赛登录
我的世界天穹宝可梦服务器密码
软件开发合同纠纷质量问题