QT自学过程记录(9-2):控件 - 输入部件组

1 目录及资源索引

  QT自学过程目录及资源索引
  参考网址:https://blog.csdn.net/bwangk/article/details/80793492

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()));
  • 开启定时器并设定定时周期。

  定时器启动的两种方式如下:

  1. start(int time);
  2. setSingleShot(true);

  第一种表示每隔 time 秒,就会重启定时器,可以重复触发定时,利用 stop() 将定时器关掉。而第二种则是仅启动定时器一次。工程中常用的是第一种。示例如下:

time_clock->start(2000);

5 总结

  1. 学到了怎么获取本机时间,日期。分别有三个,单独获取时间,单独获取日期,既可以获取时间,又可以获取日期。
  2. 学到了定时器相关类,及使用方法。有了一个简单的概念,类比单片机开发中的定时器中断,及Linux中的相关定时器操作有了大概的理解。
  3. 时间日期等输入控件自己有练习,但定时器没有自己练习,后续使用到的时候需要熟悉一下。
  4. 后续学习QT的时间间隔可能要长一些,目前会先学Java4Android,Android等相关知识。
发布了88 篇原创文章 · 获赞 84 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/Fighting_Boom/article/details/104186273