在Windows系统上怎么用QT5实现一个时钟桌面(qt5,windows,开发技术)

时间:2024-04-29 19:44:20 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

介绍

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

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

实现代码

clock.pro

QT+=coregui

greaterThan(QT_MAJOR_VERSION,4):QT+=widgets

CONFIG+=c++11

YoucanmakeyourcodefailtocompileifitusesdeprecatedAPIs.

Inordertodoso,uncommentthefollowingline.

DEFINES+=QT_DISABLE_DEPRECATED_BEFORE=0x060000#disablesalltheAPIsdeprecatedbeforeQt6.0.0

SOURCES+=\
main.cpp\
analogclock.cpp

HEADERS+=\
analogclock.h

Defaultrulesfordeployment.

qnx:target.path=/tmp/$${TARGET}/bin
else:unix:!android:target.path=/opt/$${TARGET}/bin
!isEmpty(target.path):INSTALLS+=target

analogclock.h

#ifndefANALOGCLOCK_H

defineANALOGCLOCK_H

include<QWidget>

classAnalogClock:publicQWidget
{
Q_OBJECT

public:
AnalogClock(QWidgetparent=0);
protected:
voidpaintEvent(QPaintEvent
event)override;
};

endif//WIDGET_H

analogclock.cpp

#include<QtWidgets>

include"analogclock.h"

AnalogClock::AnalogClock(QWidgetparent)
:QWidget(parent)
{
QTimer
timer=newQTimer(this);
//实例一个QTimer的类
connect(timer,SIGNAL(timeout()),this,SLOT(update()));
//监控timeout()信号是否发出
//timeout()表示:Thissignalisemittedwhenthetimertimesout.
//指计时器发出信号,即下面的延时器发出信号
timer->start(1000);//设置1s的延时
/
forafunction
voidQTimer::start(intmsec)
Startsorrestartsthetimerwithatimeoutintervalofmsecmilliseconds.
Ifthetimerisalreadyrunning,itwillbestoppedandrestarted.
IfsingleShotistrue,thetimerwillbeactivatedonlyonce.
单位是毫秒,表示每一秒设置一个信号发出
/
setWindowTitle(tr("AnalogClock"));
//voidsetWindowTitle(constQString&)
resize(200,200);
//初始值大小
}
voidAnalogClock::paintEvent(QPaintEvent)
{
/


repaint()orupdate()wasinvoked,
thewidgetwasobscuredandhasnowbeenuncovered,or
manyotherreasons.


*/
staticconstQPointhourHand[3]={
QPoint(7,8),
QPoint(-7,8),
QPoint(0,-40)
};//用于绘制时针的三角形
staticconstQPointminuteHand[3]={
QPoint(7,8),
QPoint(-7,8),
QPoint(0,-60)
};//用于绘制分针的三角形
staticconstQPointsecondHand[3]={
QPoint(7,8),
QPoint(-7,8),
QPoint(0,-90)
};//用于绘制秒针的三角形

QColorhourColor(127,0,127);
QColorminuteColor(0,127,127,191);
//QColor::QColor(intr,intg,intb,inta=255)a表示透明度
QColorsecondColor(220,20,60,100);
//为每一个图形绘制颜色及透明度

intside=qMin(width(),height());
//我认为这一句的作用在于找到最小标出,用于坐标系的绘制

QTimetime=QTime::currentTime();
qDebug()<<time<<'\n';//用于检验现在的时间

QPainterpainter(this);//Qt强大的画图工具
painter.setRenderHint(QPainter::Antialiasing);//用于反锯齿
//针对所有的组件,都反锯齿//表示设置渲染提示

painter.translate(width()/2,height()/2);//将原点放在中心
painter.scale(side/200.0,side/200.0);//Scalesthecoordinatesystemby(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(inti=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(intj=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>

intmain(intargc,char*argv[])
{
QApplicationa(argc,argv);
AnalogClockw;
w.show();
returna.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实现一个时钟桌面的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Golang如何封装PHP常用函数下一篇:

11 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18