QT--多页面、定时器和日期时间数据

多页面

  1. widget.ui 负责实现一个页面; mian.cpp创建窗体对象,并监控上面的事件

  2. 窗口的显示和隐藏:
    一个窗体,比如logpage widget,继承QWidget
    QWidget::show(); 显示该窗体
    QWidget::hide(); 隐藏该窗体

  3. 页面间通信采用在main.cpp中创建connect槽函数。
    在这里插入图片描述

  4. 代码如下

//main.cpp
#include "widget.h"
#include "vice_form.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;vice_form vice;QObject::connect(&w,SIGNAL(logSuccessVistVice_formSignal(QString&,QString&)),&vice,SLOT(wlogSuccessVistVice_formSignalToSlot(QString&,QString&)));QObject::connect(&vice,SIGNAL(vice_formReturnWidgetSiganl()),&w,SLOT(vice_formReturnWidgetSiganlSlotFun()));w.show();return a.exec();
}//widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();
public slots:void btnLogClickedSlotFun();void vice_formReturnWidgetSiganlSlotFun();
signals:void logSuccessVistVice_formSignal(QString&,QString&);
private:Ui::Widget *ui;};
#endif // WIDGET_H//widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QDialog>
#include<QMessageBox>
#include "vice_form.h"
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->move(600,300);ui->lineName->setPlaceholderText("请输入姓名");ui->linePasswd->setPlaceholderText("请输入密码");ui->linePasswd->setEchoMode(QLineEdit::Password);ui->btnLog->setText("登录");connect(ui->btnLog,SIGNAL(clicked()),this,SLOT(btnLogClickedSlotFun()));
}Widget::~Widget()
{delete ui;
}void Widget::btnLogClickedSlotFun()
{QString name = ui->lineName->text();QString passwd=ui->linePasswd->text();this->hide();emit logSuccessVistVice_formSignal(name,passwd);}void Widget::vice_formReturnWidgetSiganlSlotFun()
{this->show();}//vice_form.h
#ifndef VICE_FORM_H
#define VICE_FORM_H#include <QWidget>namespace Ui {
class vice_form;
}class vice_form : public QWidget
{Q_OBJECTpublic:explicit vice_form(QWidget *parent = nullptr);~vice_form();
signals:void vice_formReturnWidgetSiganl();
public slots:void wlogSuccessVistVice_formSignalToSlot(QString&,QString&);private:Ui::vice_form *ui;
};#endif // VICE_FORM_H//vice_form.cpp
#include "vice_form.h"
#include "ui_vice_form.h"
#include<QMessageBox>
vice_form::vice_form(QWidget *parent) :QWidget(parent),ui(new Ui::vice_form)
{ui->setupUi(this);
}vice_form::~vice_form()
{delete ui;
}void vice_form::wlogSuccessVistVice_formSignalToSlot(QString &name, QString &passwd)
{if(name!="xiaowang"){//QMessageBox::StandardButton btn;//根据btn的值进行后续操作QMessageBox::information(this,"提醒","姓名不对喔",QMessageBox::Yes|QMessageBox::No);emit vice_formReturnWidgetSiganl();return;}if(passwd!="123456"){//QMessageBox::StandardButton btn;//根据btn的值进行后续操作QMessageBox::information(this,"提醒","密码不对喔",QMessageBox::Yes|QMessageBox::No);emit vice_formReturnWidgetSiganl();return;}this->show();
}

定时器QTimer

  1. QTimer 是软件定时器,其父类是QObject。QTimer 的主要功能是设置以毫秒为单位的定时周期,然后进行连续定时单次定时。启动定时器后,定时溢出时QTimer会发射timeout()
    信号,为timeout()信号关联槽函数就可以进行定时处理。
  2. 常用方法
函数含义
start(int msec)启动定时器,定时器会在每个 msec 毫秒后发出一次 timeout 信号。
stop()停止定时器。
setInterval(int msec)设置定时器的时间间隔为 msec 毫秒。
isActive()检查定时器是否正在运行。
  1. 代码举例
//widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QTimer>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();
public slots:void timeoutSlotFun();private:Ui::Widget *ui;QTimer timer;
};
#endif // WIDGET_H//widget.cpp
#include "widget.h"
#include "ui_widget.h"// Widget 类的构造函数
Widget::Widget(QWidget *parent): QWidget(parent) // 调用基类 QWidget 的构造函数, ui(new Ui::Widget) // 初始化 UI 对象
{ui->setupUi(this); // 设置 UI 组件// 设置定时器精度为精确定时器timer.setTimerType(Qt::PreciseTimer);/** Qt::PreciseTimer:精确定时器,精度尽量保持在毫秒级。* Qt::CoarseTimer:粗糙定时器,定时误差尽量在定时周期值的5%以内。* Qt::VeryCoarseTimer:非常粗糙的定时器,精度保持在秒级。*/timer.start(100); // 启动定时器,每100毫秒触发一次// 连接定时器的 timeout 信号到 timeoutSlotFun 槽函数connect(&timer, SIGNAL(timeout()), this, SLOT(timeoutSlotFun()));
}// Widget 类的析构函数
Widget::~Widget()
{delete ui; // 删除 UI 对象,释放内存// QTimer 的内存由 QWidget 管理,不需要手动删除
}// 定时器超时处理函数
void Widget::timeoutSlotFun()
{static int a = 10; // 静态变量 a 用于记录计数值a++; // 计数器递增ui->label->setText("hello"); // 设置 QLabel 的文本为 "hello"ui->label->setText(QString("this is number: %1").arg(a)); // 更新 QLabel 的文本,显示当前计数值// 当计数器 a 达到500时,停止定时器if (a == 500) {timer.stop(); // 停止定时器}
}

日期时间数据

  • QTime:表示时间数据的类,时间数据如12:04:35。
  • QDate:表示日期数据的类,日期数据如2021-9-15。
  • QDateTime:表示日期时间数据的类,日期时间数据如2021-09-16 17:22:43。
QTime类
  1. QTime 是用于存储和操作时间数据的类,时间数据包含小时、分钟、秒、毫秒。QTime总是
    使用24小时制,不区分AM/PM。
  2. QTime::currentTime()可以获取系统的当前时间
  3. QTime TM1(1,1,1);//初始化设置时间为1时1分1秒
  4. QString str = TM1.toString(“HH:mm:ss”); // 将时间格式化为字符串
  5. 可以通过对时间变量.hour这种方法获得单独小时这种。
QDate类
  1. QDate 是用于存储和操作日期数据的类。日期数据包含年、月、日数据。
  2. QDate::currentDate()获取系统的当前日期创建一个QDate 变量。
  3. QString str= DT2.toString(“yyyy-MM-dd”); // 将时间格式化为字符串
QDateTime类
  1. QDateTime 是表示日期时间数据的类,包含日期数据和时间数据。QDateTime 综合了日期和
    时间的操作,很多函数与QDate和QTime的相似。
  2. QDateTime QDateTime::currentDateTime() //返回系统的当前日期时间,本地时间
    QDateTime QDateTime::currentDateTimeUtc() //返回系统的当前日期时间,UTC时间
代码展示
void Widget::on_btnDebugDateTime_clicked()
{// 获取当前的日期和时间QDateTime DT1 = QDateTime::currentDateTime();// 将日期和时间格式化为 "年-月-日 时:分:秒"QString str = DT1.toString("yyyy-MM-dd hh:mm:ss");qDebug("DT1= %s", str.toLocal8Bit().data()); // 输出当前的日期和时间// 获取日期部分QDate dt = DT1.date();str = dt.toString("yyyy-MM-dd"); // 将日期格式化为 "年-月-日"qDebug("DT1.date()= %s", str.toLocal8Bit().data()); // 输出日期部分// 获取时间部分QTime tm = DT1.time();str = tm.toString("hh:mm:ss zzz"); // 将时间格式化为 "时:分:秒 时区"qDebug("DT1.time()= %s", str.toLocal8Bit().data()); // 输出时间部分// 获取从 1970-01-01 到当前时间的秒数qint64 MS = DT1.toSecsSinceEpoch();qDebug("DT1.toSecsSinceEpoch()= %lld", MS); // 输出秒数MS += 120; // 增加 120 秒DT1.setSecsSinceEpoch(MS); // 设置新的时间str = DT1.toString("yyyy-MM-dd hh:mm:ss"); // 将更新后的时间格式化为 "年-月-日 时:分:秒"qDebug("DT1+120s= %s", str.toLocal8Bit().data()); // 输出更新后的时间
}void Widget::on_btnDebugDate_clicked()
{// 初始化日期为 2021年7月6日QDate DT1(2021, 7, 6);QString str = DT1.toString("yyyy-MM-dd"); // 将日期格式化为 "年-月-日"qDebug("DT1= %s", str.toLocal8Bit().data()); // 输出初始化的日期// 设置日期为 2021年8月25日QDate DT2;DT2.setDate(2021, 8, 25);str = DT2.toString("yyyy-MM-dd"); // 将新日期格式化为 "年-月-日"qDebug("DT2= %s", str.toLocal8Bit().data()); // 输出设置后的日期// 计算 DT2 和 DT1 之间的天数差qDebug("Days between DT2 and DT1= %d", DT2.daysTo(DT1)); // 输出两日期之间的天数// 获取当前日期DT2 = QDate::currentDate();str = DT2.toString("yyyy-MM-dd"); // 将当前日期格式化为 "年-月-日"qDebug("Current date= %s", str.toLocal8Bit().data()); // 输出当前日期// 输出当前日期的各个组成部分qDebug("Year= %d", DT2.year()); // 输出年份qDebug("Month= %d", DT2.month()); // 输出月份qDebug("Day= %d", DT2.day()); // 输出日期qDebug("Day of week= %d", DT2.dayOfWeek()); // 输出星期几(1 表示星期一,7 表示星期天)
}void Widget::on_btnDebugTime_clicked()
{// 定义并初始化时间为 13:24:05QTime TM1(13, 24, 5);QString str = TM1.toString("HH:mm:ss"); // 将时间格式化为 "时:分:秒"qDebug("Original time= %s", str.toLocal8Bit().data()); // 输出原始时间// 延后 150 秒QTime TM2 = TM1.addSecs(150);str = TM2.toString("HH:mm:ss"); // 将延后后的时间格式化为 "时:分:秒"qDebug("150s later, time= %s", str.toLocal8Bit().data()); // 输出延后后的时间// 获取当前时间TM2 = QTime::currentTime();str = TM2.toString("HH:mm:ss zzz"); // 将当前时间格式化为 "时:分:秒 时区"qDebug("Current time= %s", str.toLocal8Bit().data()); // 输出当前时间// 输出当前时间的各个组成部分qDebug("Hour= %d", TM2.hour()); // 输出小时qDebug("Minute= %d", TM2.minute()); // 输出分钟qDebug("Second= %d", TM2.second()); // 输出秒qDebug("MSecond= %d", TM2.msec()); // 输出毫秒
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/48190.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

极狐GitLab如何配置使用独立数据库?

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab &#xff1a;https://gitlab.cn/install?channelcontent&utm_sourcecsdn 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署…

【ML练习】决策树

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、决策树算法概述 二、代码实现 代码目标&#xff1a;我们希望通过鸢尾花数据&#xff0c;训练一个决策树模型&#xff0c;之后应用该模型&#xff0c;可以…

STM32 CAN外设(基于STMF103C8T6)

STM32内置bxCAN外设&#xff08;CAN控制器)&#xff0c;支持CAN2.0A和2.0B&#xff0c;可以自动发送CAN报文和按照过滤器自动接收指定CAN报文&#xff0c;程序只需处理报文数据而无需关注总线的电平细节 波特率最高可达1兆位/秒3个可配置优先级的发送邮箱2个3级深度的接…

Java后端开发(十五)-- Ubuntu 开启activemq开机自启动功能

目录 1. 修改Wrapper.conf文件配置内容 2. 在/etc/systemd/system目录下创建activemq.service文件 3. 重启服务器,验证是否生效 4. 系统启动目标问题 操作环境: 1、Ubuntu 22.04.4 LTS (GNU/Linux 6.5.0-28-generic x86_64) 2、jdk17.0.11 3、apache-activemq-6.0.1 1. 修…

学习测试10-1自动化 python基础

下载python 要配置环境变量 进入Python的官方下载页面 http://www.python.org/download/安装PyCharm工具&#xff0c;网上可以下载&#xff0c;很多资源&#xff0c;也有免安装的版本&#xff0c;在网上找激活码 链接: https://pan.baidu.com/s/1Y6S_n3KbnjOdE9EDZ5nixw?pwdd…

一种全局数据变化而且是多个的通知实现

有个需求&#xff1a; 从activityA&#xff0c;打开activityB, activityC 或者还存在viewpager上的其他Fragment。甚至activityB&#xff0c;又打开了activityBA。 在这些界面上&#xff0c;大家都有相同的数据Bean(name, info, isFavourite)去展示成卡片列表。 这种情况下&…

社会科学研究

《社会科学研究》是四川省社会科学院主管主办&#xff0c;国内外公开发行的综合性人文社会科学学术理论刊物&#xff0c;于1979年3月创刊&#xff0c;主要刊登经济学、政治学、法学、社会学、哲学、历史学、文学、新兴交叉等学科的研究论文&#xff0c;是我国人文社科界向海内外…

CentOS 7 yum官方源失效

问题 2024年7月&#xff0c;官方对centos 7停止了维护&#xff0c;yum的源网址mirror.centos.org也已经无法访问。 在此情况下&#xff0c;无法正常使用yum进行安装和更新工具。 在尝试了更换阿里源之后&#xff0c;仍然有部分工具库无法访问。 通用解决方案 1. 打开/etc/y…

AWS Certified Developer Associate备考笔记

AWS Certified Developer Associate备考笔记 缓慢更新中&#xff0c;如果你也正在关注该考试&#xff0c;请点赞后评论感兴趣的章节&#xff0c;可加快我的更新速度 &#x1f603; 文章目录 AWS Certified Developer Associate备考笔记一、IAM二、EC2三、EC2 Instance Storage…

CAPL语言设计(3)——流程控制

CAPL语言设计&#xff08;3&#xff09;——流程控制 if条件语句if一般格式if与else格式 switch语句while循环语句while循环的一般形式为&#xff1a;do-while循环 for循环语句break语句return语句 if条件语句 CAPL中的if语句有以下两种形式 if一般格式 if (表达式) 语句;例…

【WordPress插件】Media folder汉化版-媒体文件夹-v5.1.2

WP媒体文件夹(WP Media folder)是一个真正的节省图片加载时间的插件&#xff0c;你可以管理文件和图片&#xff0c;从本地WordPress媒体管理器。该插件还包括一个增强版的WordPress图库管理器&#xff0c;主题 NextGEN图库导入器。 【WordPress插件】Media folder汉化版-媒…

Jetson-AGX-Xavier gstreamer UDP推拉流

Jetson-AGX-Xavier gstreamer UDP推拉流 安装nvidia-jetpack 使用硬件编解码 sudo apt-get install nvidia-jetpackgstreamer UDP 推流 gst-launch-1.0 v4l2src device"/dev/video4" ! video/x-raw, format(string)UYVY, width(int)1920, height(int)1080 ! nvvid…

C++的STL简介

0.STL简介 C的STL&#xff08;Standard Template Library&#xff0c;标准模板库&#xff09;是C标准库的一部分&#xff0c;它提供了一套通用的类和函数模板&#xff0c;用于处理数据结构和算法。STL的主要组件包括&#xff1a; 容器分配器算法迭代器适配器仿函数 容器 容…

数据库系统概论:事务与并发一致性问题

随着网络应用的普及&#xff0c;数据库并发问题变得越来越重要。数据库并发指的是多个用户或进程同时访问和操作数据库的能力。它是数据库系统性能优化的重要方面&#xff0c;旨在提高系统的吞吐量和响应时间&#xff0c;以满足多用户同时访问数据库的需求。然而&#xff0c;这…

JAVA IO中的缓冲流,PrintStream类和PrintWriter以及System.in获取用户输入流详解

1.缓冲流 在java中&#xff0c;缓x冲流&#xff08;Buffered Streams&#xff09;是非常有用的&#xff0c;它们属于处理流的一种&#xff0c;用于提高原始数据流&#xff08;如文件流&#xff0c;网络流&#xff09;的读取和写入效率。 Java 的缓冲流是对字节流和字符流的一种…

白骑士的PyCharm教学基础篇 1.1 PyCharm简介

系列目录 上一篇&#xff1a;无内容 什么是PyCharm&#xff1f; PyCharm 是由 JetBrains 开发的一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;专为 Python 编程语言设计。它提供了强大的代码编辑、调试、测试和部署功能&#xff0c;使得 Python 开发更加高效和便…

Linux NFS服务搭建及使用

一、NFS 服务器介绍 nfs &#xff08; Network File System &#xff09;即网络文件系统&#xff0c;其基于 UDP/IP使用 nfs 能够在不同计算机之间通过网络进行文件共享&#xff0c;能使使用者访问网络上其它计算机中的文件就像在访问自己的计算机一样。 二、NFS 服务器的特点 …

阿里云服务器 篇四:404页面模板

文章目录 系列文章tsParticles 404 Templates安装方法效果展示更多系列文章 阿里云服务器 篇一:申请和初始化 阿里云服务器 篇二:搭建静态网站 阿里云服务器 篇三:提交搜索引擎收录 阿里云服务器 篇四:404页面模板 tsParticles 404 Templates 官网:https://github.com/…

Websocket自动消息回复服务端工具

点击下载《Websocket自动消息回复服务端工具》 1. 前言 在进行Websocket开发时&#xff0c;前端小伙伴通常是和后端开发人员同步进行项目开发&#xff0c;经常会遇到后端开发人员接口还没开发完&#xff0c;也没有可以调试的环境&#xff0c;只能按照接口文档进行“脑回路开发…

【源码阅读】osproxy对象存储分布式代理(2)--初始化底层服务和日志器

文章目录 初始化底层服务函数返回类型APPRedis newLangGoConfig()函数initLangGoConfig()函数 初始化日志器 上一章【源码阅读】osproxy对象存储分布式代理&#xff08;1&#xff09;下一章 这部分涉及了对于底层服务的初始化和日志器的初始化两部分 // 初始化底层服务&#x…