我的编程空间,编程开发者的网络收藏夹
学习永远不晚

在Windows系统上怎么用QT5实现一个时钟桌面

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

在Windows系统上怎么用QT5实现一个时钟桌面

这篇文章主要讲解了“在Windows系统上怎么用QT5实现一个时钟桌面”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在Windows系统上怎么用QT5实现一个时钟桌面”吧!

介绍

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

在Windows系统上怎么用QT5实现一个时钟桌面

实现代码

clock.pro 

QT       += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++11# You can make your code fail to compile if it uses 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}/binelse: unix:!android: target.path = /opt/$${TARGET}/bin!isEmpty(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的延时       setWindowTitle(tr("Analog Clock"));    //void setWindowTitle(const QString &)    resize(200, 200);    //初始值大小}void AnalogClock::paintEvent(QPaintEvent *) {        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 secondHand[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 secondColor(220,20,60,100);    //为每一个图形绘制颜色及透明度    int side = qMin(width(), height());    //我认为这一句的作用在于找到最小标出,用于坐标系的绘制    QTime time = QTime::currentTime();    qDebug()<<time<<'\n';//用于检验现在的时间    QPainter painter(this);//Qt强大的画图工具    painter.setRenderHint(QPainter::Antialiasing);// 用于反锯齿    //针对所有的组件,都反锯齿//表示设置渲染提示    painter.translate(width() / 2, height() / 2);//将原点放在中心    painter.scale(side / 200.0, side / 200.0);//Scales the coordinate system by (sx, sy).标尺坐标系    //Qt画板的x和y表示什么,x表示横线吗,y表示纵线吗?对的    //说明横坐标的范围是-100到100    //   纵坐标的范围是-100到100//时针:    painter.setPen(Qt::NoPen);//一般用于描边,Qt::NoPen表示画笔没有边界    painter.setBrush(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.setPen(hourColor);    for (int i = 0; i < 12; ++i) {        painter.drawLine(88, 0, 96, 0);        painter.rotate(30.0);//画横线,表示时间示数的标尺    }//分针和秒针同时针//分针:    painter.setPen(Qt::NoPen);    painter.setBrush(minuteColor);    painter.save();    painter.rotate(6.0 * (time.minute() + time.second() / 60.0));    painter.drawConvexPolygon(minuteHand, 3);    painter.restore();    painter.setPen(minuteColor);    for (int j = 0; j < 60; ++j) {        if ((j % 5) != 0)            painter.drawLine(92, 0, 96, 0);        painter.rotate(6.0);    }//时针:    painter.setPen(Qt::NoPen);    painter.setBrush(secondColor);    painter.save();    painter.rotate(6*time.second());    painter.drawConvexPolygon(secondHand,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版本,但是给其他用户使用最好是release版本,因此打包前需要切换到release版本重新编译一遍。

在Windows系统上怎么用QT5实现一个时钟桌面

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

打包

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

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

在Windows系统上怎么用QT5实现一个时钟桌面

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

在Windows系统上怎么用QT5实现一个时钟桌面

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

在Windows系统上怎么用QT5实现一个时钟桌面

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

在Windows系统上怎么用QT5实现一个时钟桌面

感谢各位的阅读,以上就是“在Windows系统上怎么用QT5实现一个时钟桌面”的内容了,经过本文的学习后,相信大家对在Windows系统上怎么用QT5实现一个时钟桌面这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

在Windows系统上怎么用QT5实现一个时钟桌面

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

在Windows系统上怎么用QT5实现一个时钟桌面

这篇文章主要讲解了“在Windows系统上怎么用QT5实现一个时钟桌面”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“在Windows系统上怎么用QT5实现一个时钟桌面”吧!介绍这是一个简单的
2023-06-28

怎么在Html5中使用canvas实现一个粒子时钟

这篇文章将为大家详细讲解有关怎么在Html5中使用canvas实现一个粒子时钟,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。首先要创建一个html文件并添加一个canvas画布,如下:
2023-06-09

怎么在HTML5中使用WebGL实现一个垃圾分类系统

怎么在HTML5中使用WebGL实现一个垃圾分类系统?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。gv.setMovableFunc(() => { return false
2023-06-09

怎么在Java中利用MySQL实现一个图书管理系统

今天就跟大家聊聊有关怎么在Java中利用MySQL实现一个图书管理系统,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一,功能管理员登录图书借阅信息管理图书信息管理管理员更改密码退出系
2023-06-14

怎么在java中使用mysql实现一个学生信息管理系统

今天就跟大家聊聊有关怎么在java中使用mysql实现一个学生信息管理系统,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。具体内容如下import java.awt.BorderLay
2023-05-30

使用java怎么在控制台中实现一个学生信息管理系统

使用java怎么在控制台中实现一个学生信息管理系统?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录