首页 > 作文

基于QT5实现一个时钟桌面

更新时间:2023-04-04 17:09:39 阅读: 评论:0

目录
介绍实现代码clock.proanalogclock.hanalogclock.cppmain.cpp编译打包编译打包

介绍

这是一个简单的时钟运行界面,项目的结构如图所示,主要包含一个头文件:** analogclock.h **,两个源文件: ** analogclock.cpp main.cpp **.

看完本教程,你就可以知悉在windows系统上如何实现一个界面程序并部署在windows系统上。

实现代码

clock.pro

qt       += core粽子图片 guigreaterthan(qt_major_version, 4): qt += widgetsconfig += c++11# you can make your code fail to compile if it us deprecated apis.# in order to do so, uncomment the following line.#defines += qt_disable_deprecated_before=0x060000    # disables all the apis deprecated before qt 6.0.0sources += \    main.cpp \    analogclock.cppheaders += \    analogclock.h# default rules for deployment.qnx: target.path = /tmp/$${target}/binel: unix:!android: target.path = /opt/$${target}/bin!impty(target.path): installs += target

analogclock.h

#ifndef analogclock_h#define analogclock_h#include <qwidget>class analogclock般若 : public qwidget{    q_objectpublic:    analogclock(qwidget *parent=0);protected:    void paintevent(qpaintevent *event) override;};#endif // widget_h

analogclock.cpp

#include <qtwidgets>#include "analogclock.h"analogclock::analogclock(qwidget *parent)    : qwidget(parent){    qtimer *timer = new qtimer(this);    //实例一个qtimer的类    connect(timer, signal(timeout()), this, slot(update()));    //监控timeout()信号是否发出    //timeout()表示:this signal is emitted when the timer times out.    //指计时器发出信号,即下面的延时器发出信号    timer->start(1000);//设置1s的延时   /*    *for a function    * void qtimer::start(int mc)    * starts or restarts the timer with a timeout interval of mc milliconds.    * if the timer is already running, it will be stopped and restarted.    * if singleshot is true, the timer will be activated only once.    * 单位是毫秒,表示每一秒设置一个信号发出    */    twindowtitle(tr("analog clock"));    //void twindowtitle(const qstring &)    resize(200, 200);    //初始值大小}void analogclock::paintevent(qpaintevent *) {    /*     *     *   repaint() or update() was invoked,     *   the widget was obscured and has now been uncovered, or     *   many other reasons.     *     *     */    static const qpoint hourhand[3] = {        qpoint(7, 8),        qpoint(-7, 8),        qpoint(0, -40)    };//用于绘制时针的三角形    static const qpoint minutehand[3] = {        qpoint(7, 8),        qpoint(-7, 8),        qpoint(0, -60)    };//用于绘制分针的三角形    static const qpoint condhand[3]={        qpoint(7,8),        qpoint(-7,8),        qpoint(0,-90)    };//用于绘制秒针的三角形    qcolor hourcolor(127, 0, 127);    qcolor minutecolor(0, 127, 127, 191);    //qcolor::qcolor(int r, int g, int b, int a = 255)a表示透明度    qcolor condcolor(220,20,60,100);    //为每一个图形绘制颜色及透明度    int side = qmin(width(), height());    //我认为这一句的作用在于找到最小标出,用于坐标系的绘制    qtime time = qtime::currenttime();    qdebug()<<time<<'\n';//用于检验现在的时间    qpainter paint我的铅笔盒er(this);//qt强大的画图工具    painter.trenderhint(qpainter::antialiasing);// 用于反锯齿    //针对所有的组件,都反锯齿//表示设置渲染提示    painter.translate(width() / 2, height() / 2);//将原点放在中心    painter.scale(side / 200.0, side / 200.0);//scales the coordinate system by (sx, sy).标尺坐标系    //q教师资格证答案t画板的x和y表示什么,x表示横线吗,y表示纵线吗?对的    //说明横坐标的范围是-100到100    //   纵坐标的范围是-100到100//时针:    painter.tpen(qt::nopen);//一般用于描边,qt::nopen表示画笔没有边界    painter.tbrush(hourcolor);//一般用于填充    //先将原先的painter存储起来,对目前的painter操作,目前的操作不对原本的产生影响,即原本不旋转    painter.save();//首先将原先画笔类似于入栈,对另一个画笔操作    painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)));//表示旋转,若缺少painter.save(),会对整个painter类旋转    painter.drawconvexpolygon(hourhand, 3);//绘制多边形    painter.restore();//与painter.save()配套使用    painter.tpen(hourcolor);    for (int i = 0; i < 12; ++i) {        painter.drawline(88, 0, 96, 0);        painter.rotate(30.0);//画横线,表示时间示数的标尺    }//分针和秒针同时针//分针:    painter.tpen(qt::nopen);    painter.tbrush(minutecolor);    painter.save();    painter.rotate(6.0 * (time.minute() + time.cond() / 60.0));    painter.drawconvexpolygon(minutehand, 3);    painter.restore();    painter.tpen(minutecolor);    for (int j = 0; j < 60; ++j) {        if ((j % 5) != 0)            painter.drawline(92, 0, 96, 0);        painter.rotate(6.0);    }//时针:    painter.tpen(qt::nopen);    painter.tbrush(condcolor);    painter.save();    painter.rotate(6*time.cond());    painter.drawconvexpolygon(condhand,3);    painter.restore();}

main.cpp

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

编译打包

编译

一般编译过程采用的是debug版本,但是给其他用户使用最好是relea版本,因此打包前需要切换到relea版本重新编译一遍。

这样在项目文件夹中会有两种版本的exe执行程序。

打包

生成relea版本的exe后,进入文件夹中,将relea文件夹中的clock.exe复制到单独的文件夹中 ,我复制到myclock文件夹中。

在开始菜单中,选择下图红色的cmd。

进入到myclock文件夹中,输入 windeployqt clock.exe

打包完成后,在myclock文件夹中就可以看到各种.dll链接库关于乡村生活的作文文件,这是exe文件依赖的库文件,此时双击clock.exe就可以动态显示时钟了。

将该文件夹打包,就可以部署到其他的windows系统上。

到此这篇关于基于qt5实现一个时钟桌面的文章就介绍到这了,更多相关qt5时钟桌面内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 17:09:37,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/126bcb6828ae0ed6d666c9b1a604b461.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:基于QT5实现一个时钟桌面.doc

本文 PDF 下载地址:基于QT5实现一个时钟桌面.pdf

标签:文件   角形   时针   分针
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图