1 目录及资源索引
QT自学过程目录及资源索引
2 输入部件组
输入部件组截图如下:
可以发现里边有很多的输入部件,在此PDF教程中,只教了两个类(QDateTime获取时间类 和 QTimer),下边分开来说。
3 QDateTime类
由上图可以看到,其中有一个 Time Edit、一个 Date Edit、还有一个 Date/Time Edit,看字面意思也很清楚,一个是时间类,一个是日期类,最后一个是日期或时间类(两个都有),功能只是部分跟全部的区别而已。根据文章开头参考资料,QDateTime类可以修改设置时区属性。
自己根据教程,测试代码如下:
// 主函数开头添加如下头文件
#include <QLabel>
#include <QDateTime>
// 主函数中添加如下内容
QLabel *datalabel = new QLabel(); // 创建一个显示主题
QDateTime *datetime = new QDateTime(QDateTime::currentDateTime()); // 获取当前本机时间日期
datalabel->setText(datetime->date().toString());
datalabel->show();
上边代码,放进主函数后,编译运行,结果如下:
发现有点不太对劲啊,我这个明明是时间日期函数,为什么编译运行后,只出来了日期,时间哪去了?冷静思考了一下,又看了一下代码,还看了这个类,发现就是用这个类就能让时间日期都显示出来,但是到底是哪一步操作错了呢?下边放两行代码对比一下就知道了
datalabel->setText(datetime->date().toString());
datalabel->setText(datetime->date().toString() + " " + datetime->time().toString());
第一行代码即原代码,只把日期转换成字符串并赋值给了显示主题,并没有把时间转换出来,因此我们看不到时间。而第二行代码,是我又把时间给转换为字符串,加到了日期后边,可以看到重新运行后的结果如下:
大功告成!哈哈
4 QTimer类
看名字大概就理解,这是一个定时器的类,里边的函数基本都是跟定时器相关,使用定时器的方法如下:
- 新建一个定时器
QTimer *time_clock = new QTimer(parent);
- 连接这个定时器的信号和槽,利用定时器的 timeout()
connect(time_clock, SIGNAL(timeout()), this, SLOT(slottimedone()));
- 开启定时器并设定定时周期。
定时器启动的两种方式如下:
- start(int time);
- setSingleShot(true);
第一种表示每隔 time 秒,就会重启定时器,可以重复触发定时,利用 stop() 将定时器关掉。而第二种则是仅启动定时器一次。工程中常用的是第一种。示例如下:
time_clock->start(2000);
5 总结
- 学到了怎么获取本机时间,日期。分别有三个,单独获取时间,单独获取日期,既可以获取时间,又可以获取日期。
- 学到了定时器相关类,及使用方法。有了一个简单的概念,类比单片机开发中的定时器中断,及Linux中的相关定时器操作有了大概的理解。
- 时间日期等输入控件自己有练习,但定时器没有自己练习,后续使用到的时候需要熟悉一下。
- 后续学习QT的时间间隔可能要长一些,目前会先学Java4Android,Android等相关知识。