在Windows系统上怎么用QT5实现一个时钟桌面
导读:本文共3700字符,通常情况下阅读需要12分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要:介绍这是一个简单的时钟运行界面,项目的结构如图所示,主要包含一个头文件: analogclock.h ,两个源文件: analogclock.cpp main.cpp .实现代码clock.proQT+=coreguigreaterThan(QT_MAJOR_VERSION,4):QT+=widgetsCONFIG+=c++11Youcanmakeyourcodefailtocompile... ...
目录
(为您整理了一些要点),点击可以直达。介绍
这是一个简单的时钟运行界面,项目的结构如图所示,主要包含一个头文件: analogclock.h ,两个源文件: analogclock.cpp main.cpp .
实现代码
clock.pro
QT+=coreguigreaterThan(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.cppHEADERS+=\
analogclock.hDefaultrulesfordeployment.
qnx:target.path=/tmp/$${TARGET}/bin
else:unix:!android:target.path=/opt/$${TARGET}/bin
!isEmpty(target.path):INSTALLS+=target
analogclock.h
#ifndefANALOGCLOCK_HdefineANALOGCLOCK_H
include<QWidget>
classAnalogClock:publicQWidget
{
Q_OBJECTpublic:
AnalogClock(QWidgetparent=0);
protected:
voidpaintEvent(QPaintEventevent)override;
};endif//WIDGET_H
analogclock.cpp
#include<QtWidgets>include"analogclock.h"
AnalogClock::AnalogClock(QWidgetparent)
:QWidget(parent)
{
QTimertimer=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版本重新编译一遍。
这样在项目文件夹中会有两种版本的exe执行程序。
打包
生成release版本的exe后,进入文件夹中,将release文件夹中的clock.exe复制到单独的文件夹中 ,我复制到myClock文件夹中。
在开始菜单中,选择下图红色的cmd。
进入到myClock文件夹中,输入 windeployqt clock.exe
打包完成后,在myClock文件夹中就可以看到各种.dll链接库文件,这是exe文件依赖的库文件,此时双击clock.exe就可以动态显示时钟了。
将该文件夹打包,就可以部署到其他的Windows系统上。
在Windows系统上怎么用QT5实现一个时钟桌面的详细内容,希望对您有所帮助,信息来源于网络。