C++中Qt如何绘制时钟界面
发表于:2024-12-04 作者:千家信息网编辑
千家信息网最后更新 2024年12月04日,这篇文章给大家分享的是有关C++中Qt如何绘制时钟界面的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先来看一下效果:大概就是这样子,需要注意的是,这里你需要创建一个基类为
千家信息网最后更新 2024年12月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安全错误
数据库的锁怎样保障安全
传奇数据库编辑 微盘
软件开发培训机构排行榜
软件开发服务直播宣传
工业云数据库平台
第三方服务器管理器
计算机网络技术期末考试真题
传奇最新技能数据库
长扬科技互联网
网络安全工程师零基础要学哪些
上海动产保险软件开发定制方案
泰坦陨落2连接服务器就闪退
关于网络安全班会总结报告
网络安全法制定的重要性
国庆期间学校网络安全提醒
公安网络安全整顿方案
网络安全保密工作培训材料
软件开发瀑布型模型定义阶段
软件开发员怎么做
上海交大网络安全学院院长
湖北网络安全三级等保
网络技术基础是学什么的
岚海网络安全ppt
mysql怎么更改数据库
通信与网络技术现状
新手如何学好计算机网络技术
qq游戏安装数据库
ios软件开发视频教程
数据库技术课程设计注意事项
团总支网络技术部
聚牛网络技术支持