时间类QTime/QTimer
目录
时间类QTime/QTimer 20210119
实例:电子时钟
代码及详细解释如下:
【digiclock.cpp】
【digiclock.h】
【main.cpp】
备注Configure Project
时间类QTime/QTimer 20210119
QTime的currentTime(); //获取当前的系统时间
QTime的toString("hh:mm:ss A"); //将获取的当前时间转换为字符串类型 hh:mm:ss A 表示21:11:06 PM; H:mm:s a 表示9:11:6 pm
实例:电子时钟
新建:Qt Widgets Application
项目名称:Clock
类名:Dialog
基类:QDialog
不选择“创建界面”。
然后,添加C++ Class,类名:DigiClock,基类:<Custom> QLCDNumber
最终效果如下:
代码及详细解释如下:
【digiclock.cpp】
#include "digiclock.h"#include <QTimer>
#include <QTime>
#include <QMouseEvent>DigiClock::DigiClock(QWidget *parent):QLCDNumber(parent)
{//设置时钟背景色 //三句话QPalette p = palette(); //获取调色板信息p.setColor(QPalette::Window,Qt::blue); //设置前景色setPalette(p);setWindowFlags(Qt::FramelessWindowHint);//设置窗体标识Flags:该窗体没有面板边框和标题栏FramelessWindowHintsetWindowOpacity(0.5); //窗体透明度Opacity:0.5为半透明//定时器QTimer类QTimer *timer = new QTimer(this);//事件关联connect(timer,SIGNAL(timeout()),this,SLOT(showTime()));timer->start(1000); //1000ms=1sshowTime(); //初始时间显示resize(150,60); //电子时钟显示尺寸showColon = true; //初始化冒号显示标志
}void DigiClock::showTime()
{QTime time = QTime::currentTime();QString text = time.toString("hh:mm");if(showColon){text[2]=':'; //不用双引号showColon = false;}else{text[2]=' ';showColon = true;}display(text);
}//鼠标按下函数
void DigiClock::mousePressEvent(QMouseEvent *event)
{if(event->button()==Qt::LeftButton)//鼠标左键按下{dragPosition = event->globalPos() - frameGeometry().topLeft();//鼠标当前位置相对窗体左上角的偏移量event->accept();}if(event->button()==Qt::RightButton)//鼠标右键按下{close(); //退出窗体}
}//鼠标移动函数
void DigiClock::mouseMoveEvent(QMouseEvent *event)
{if(event->buttons() & Qt::LeftButton)//鼠标左键按下{move(event->globalPos() - dragPosition);//move()指的是窗体左上角的位置event->accept();}
}
【digiclock.h】
#ifndef DIGICLOCK_H
#define DIGICLOCK_H#include <QLCDNumber>class DigiClock : public QLCDNumber
{Q_OBJECTpublic:DigiClock(QWidget *parent = 0);void mousePressEvent(QMouseEvent *);void mouseMoveEvent(QMouseEvent *);private slots:void showTime();private:bool showColon;QPoint dragPosition;//偏移量:鼠标当前位置相对窗体左上角的偏移量
};
#endif // DIGICLOCK_H
【main.cpp】
#include "dialog.h" //使用哪个类就必须把包含该类的头文件引用过来(*.h文件中包含了相应类的定义)#include <QApplication> //每个使用[Qt图形化应用程序]中都必须使用一个QApplication对象//QApplication管理各种各样的图形化应用程序的广泛资源、基本设置、控制流及事件处理等#include "digiclock.h"int main(int argc, char *argv[]) //这里是应用程序的入口。几乎所有使用Qt的情况下,main()函数只需在将控制转交给Qt库之前执行初始化,然后Qt库通过事件向程序告知用户的行为。//所有Qt程序必须有且只有一个main()函数。argc是命令行变量的数量,argv是命令行变量的数组。
{QApplication a(argc, argv); // a是创建的QApplication类的对象,用来处理命令行变量。所有被Qt识别的命令行参数都将从argv中移去,argc也因此减少DigiClock w; //创建DigiClock类的对象(包含该类头文件)w.show(); //窗口部件可见return a.exec(); //main()函数将控制权交给Qt,Qt完成事件处理工作,当应用程序退出的时候,exec()函数的值就会返回。//exec()函数中,Qt接收并处理用户和系统的事件,并且将他们传递给适当的窗口部件。
}
备注Configure Project
中标麒麟系统下编译文件文件夹为:build-Clock-unknown-Debug
Windows系统下编译文件文件夹为:xxx\build-Clock-Desktop_Qt_5_10_1_MinGW_32bit-Debug
Windows系统下,一定要选好工程配置参数(Configure Project),像我所使用的Qt就不能选用Desktop Qt 5.10.1 MSVC 64bit(No Debugger无调试器),而要选用Desktop Qt 5.10.1 MinGW 32bit(调试器存在)。
以上编译环境仅供参考。
时间类QTime/QTimer相关推荐
- Python Qt GUI设计:QCalendar日历类和QDateTimeEdit时间类(基础篇—20)
目录 1.QCalendar日历类 2.QDateTimeEdit时间类 1.QCalendar日历类 QCalendar是一个日历控件,它提供了一个基于月份的视图,允许用户通过鼠标或键盘选择日期,默 ...
- 0004:Qt常用类 - QTime
Qt常用类 - QTime 1 开发环境 在介绍内容之前,先说明一下开发环境,如下图: Qt版本:Qt5.3.2: Qt开发工具:Qt Creater 3.2.1: Qt构建工具:Desktop Qt ...
- C++实践参考——时间类
[项目 - 时间类]阅读.运行程序后,按要求扩充类的功能 #include <iostream> using namespace std; class Time { public:void ...
- Java基础 ----常用时间类
Java基础 ----常用时间类 java.util.Date java.util.Calendar java.text.SimpleDateFormat new Date().getTime() & ...
- 构造一个日期类java_Java8 新日期时间类(1)
Java.time 包的优势 使用Java8,新的日期时间API引入覆盖旧的日期时间API的以下缺点. 非线程安全 - java.util.Date不是线程安全的,因此开发者必须在使用日期处理并发性问 ...
- 统计函数——汇总统计时间类数据
如下数据源 要求统计各区分关于时间类的数据,如下图: 2至5列数据,如下设置公式并向下拖动: B列[接收数]:因为时间日期类数据在Excel中是一个数值,因此可以利用Count函数获取包含数值的个数 ...
- java web日期_java-web——第十一课 时间类
前言: 在我们学习java web之中,实体类的属性经常会遇到时间类 时间类也是一个很重要的类, 首先我们先了解一下经常使用的时间类 经常使用的时间类也就是这三个类 具体的可以查阅api 我们这章主要 ...
- Java的知识点22——时间处理相关类、Date时间类(java.util.Date)、DateFormat类和SimpleDateFormat类、Calendar日历类
时间处理相关类 用long类型的变量来表示时间,获得现在时刻的"时刻数值":long now = System.currentTimeMillis(); Date时间类(java. ...
- [YTU]_2617(B C++时间类的运算符重载)
题目描述 C++时间类的运算符重载 定义一个时间类Time,其数据成员为表示时间的小时(hour).分(minute),秒(second). 重载运算符"+",使之能用于时间对象的 ...
最新文章
- 【Spring】通过动态代理改进银行转账事务控制
- 有人从英伟达借了台DGX A100,让神经网络自己造了个GTA5自己玩
- CRM数据如何让企业未卜先知
- iOS5 UI 设计新手段 Storyboard
- 文章刚刚开源就被培训机构“BP”了,过于不要脸
- c语言 2个字节字符串,【单选题】在C语言中,字符型数据所占的内存空间是
A. 2 个字节
B. 4 个字节
C. 1 个字节
D. 由用户自定义...
- 9个GVP国产Java开源项目!是真滴哇塞
- HMS Core Insights第三期直播预告—— 当我们在谈论App的时候,我们还可以谈论什么?
- 云计算的三种服务模式的讲解
- java我的世界溺尸为啥这么少,我的世界:溺尸刷新几率存在问题?溺尸刷怪塔为何得不到三叉戟?...
- python制作成绩分析系统_python实现学生成绩测评系统
- Mac下解决v2端口被占用,shadowsocket(ss)程序残留问题
- 【嵌入式Linux】学习路径
- static关键字是什么意思?java中是否可以覆盖一个private方法或者static方法
- 聚焦边缘创新,Rancher推出全新开源力作Octopus
- PHPCMS短信接口替换
- ant man 什么意思_ant是什么意思中文翻译
- 关于IE浏览器打开部分页面的开发人员工具时闪退打不开的问题
- 【优秀的相册排版设计工具】SmartAlbums 2.1.10 for Mac
- 小猪的Android入门之路——目录(持续更新)