• Qt时间和定时器


    1、Qt获取当前系统时间

    QTime:时间数据类型,仅表示时间,如15:23:13。

    QDate:日期数据类型,仅表示日期,如2017-4-5。

    QDateTime:日期时间数据类型,表示日期和时间,如2017-03-23 08:12:43。

    QTimeEdit、QDataEdit、QDataTimeEdit

    //时间显示
    QTime----------时间, QDate--------------日期,
     //显示当前系统时间
    QString t = QTime::currentTime().toString("hh:mm:ss");
    ui->lcdNumber->display(t);
    qDebug()<label->setText(d);
    qDebug()<
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2、QT用于时间编辑显示相关控件

    1、主要控件

    QTimeEdit:编辑和显示时间的组件。

    QDateEdit:编辑和显示日期的组件。

    QDateTimeEdit:编辑和显示日期时间的组件。

    QCalendarWidget: 一个用日历形式选择日期的组件。

    2、QDateTimeEdit类

    QDateEdit 和 QTimeEdit 都从 QDateTimeEdit 继承而来,实现针对日期或时间的特定显示功能。实际上,QDateEdit 和 QTimeEdit 的显示功能都可以通过 QDateTimeEdit 实现,只需设置好属性即可。

    QDateTimeEdit 类的主要属性的介绍如下:

    • datetime:日期时间。
    • date:日期,设置 datetime 时会自动改变 date,同样,设置 date 时,也会自动改变 datetime 里的日期。
    • time:时间,设置 datetime 时会自动改变 time,同样,设置 time 时,也会自动改变 datetime 里的时间。
    • maximumDateTime、 minimumDateTime:最大、最小日期时间。
    • maximumDate、minimumDate:最大、最小日期。
    • maximumTime、minimumTime:最大、最小时间。
    • currentSection:当前输入光标所在的时间日期数据段,是枚举类型 QDateTimeEdit::Section。QDateTimeEdit 显示日期时间数据时分为多个段,单击编辑框右侧的上下按钮可修改当前段的值。如输入光标在YearSection段,就修改“年”的值。
    • currentSectionIndex:用序号表示的输入光标所在的段。
    • calendarPopup:是否允许弹出一个日历选择框。当取值为 true 时,右侧的输入按钮变成与 QComboBox 类似的下拉按钮,单击按钮时出现一个日历选择框,用于在日历上选择日期。对于 QTimeEdit,此属性无效。
    • setdisplayFormat:显示格式,日期时间数据的显示格式,例如设置为“yyyy-MM-dd HH:mm:ss”,一个日期时间数据就显示为“2016-11-02 08:23:46”。

    3、日期时间数据与字符串之间的转换

    字符意义
    d天,不补零显示,1-31
    dd天,补零显示,01-31
    M月,不补零显示,1-12
    MM月,补零显示,01-12
    yy年,两位显示,00-99
    yyyy年,4位数字显示,如 2016
    h小时,不补零,0-23 或 1-12 (如果显示 AM/PM)
    hh小时,补零2位显示,00-23 或 01-12 (如果显示 AM/PM)
    H小时,不补零,0-23 (即使显示 AM/PM)
    HH小时,补零显示,00-23 (即使显示 AM/PM)
    m分钟,不补零,0-59
    mm分钟,补零显示,00-59
    z毫秒,不补零,0-999
    zzz毫秒,补零 3 位显示,000-999
    AP或A使用 AM/PM 显示
    ap或a使用 am/pm 显示

    时间转字符串

    xxx.toString()

    xxx.toString(格式)

    curDateTime.toString (“yyyy 年 MM 月 dd 日”);

    字符串转时间

    这里将字符串 str 按照格式 yyyy-MM-dd hh:mm:ss 转换为日期时间变量,格式是指字符串 str 所表示的日期时间的格式。

    datetime=QDateTime::fromString(str,“yyyy-MM-dd hh:mm:ss”);

    日历 QCalendarWidget

    //获取日历上点中的日期

    QDate dt=ui->calendarWidget->selectedDate(); QString str=dt.toString("yyyy年 M 月 d 日"); ui->editCalendar->setText(str);
    
    • 1

    参考:https://blog.csdn.net/xiaolong1126626497/article/details/119277019

    //一.  秒单位时间转为字符串时、分、秒格式输出
        int time_sec=100;
        QString timer=QTime(0, 0, 0).addSecs(int(time_sec)).toString(QString::fromLatin1("HH:mm:ss"));
        qDebug()<
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    4、定时器

    在Qt的界面程序中,不能在槽函数中使用sleep函数,while死循环或者其他有长时间延时的工作。因为QT的UI线程是用来刷新界面(轮询事件),如果有一个延时工作,那么就会导致UI线程卡死。

    #include 
    
    • 1
    执行周期任务
    QTimer *myT;
    //创建定时器
    myT = new QTimer;
    //开始定时器
    myT->start(1000);
    //关联计时结束的槽函数
    connect(myT, &QTimer::timeout, this, &MainWindow::change_value);
    //停止定时器
    myT->stop();
    
    2.2 执行一次性工作
    QTimer::singleShot(5000, this, SLOT(show_test()));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    随机数

     	int num1 = qrand();
    
        //设置随机数因子
        qsrand(111);
        int num2 = qrand();
    
        //把时间作为随机数因子
        qsrand(QDateTime::currentMSecsSinceEpoch());
        qDebug()<

闹钟定、时器、秒表test:

在这里插入图片描述

  • 相关阅读:
    ModStartCMS v7.3.0 富文本MP3支持,后台组件优化
    leetcode刷题:二叉树23(二叉搜索树中的众数)
    NLP学习路线总结
    【重学C++】03 | 手撸C++智能指针实战教程
    有关cache的dirty比特位和Valid比特位的理解
    前端性能优化的常见方式
    周亚军 红宝书 案例 3 SSH远程管理协议
    卷积神经网络python实例,python卷积神经网络图像
    基于nodejs+vue水浒鉴赏平台系统
    杭电多校 7170 Package Delivery
  • 原文地址:https://blog.csdn.net/qq_45698138/article/details/126186537