当前位置: 首页 > news >正文

Qt工程文件分离、Qtimer定时器、Qt Creator 常用快捷键

Qt 工程文件分离

不含 UI 的文件分离

以堆栈窗体的代码为例。
在这里插入图片描述

firstpagewidget.h
#ifndef FIRSTPAGEWIDGET_H
#define FIRSTPAGEWIDGET_H#include <QtWidgets>				// 记得修改class firstPageWidget : public QWidget
{Q_OBJECT
public:explicit firstPageWidget(QWidget *parent = 0);signals:public slots:};#endif // FIRSTPAGEWIDGET_H
firstpagewidget.cpp
#include "firstpagewidget.h"firstPageWidget::firstPageWidget(QWidget *parent) :QWidget(parent)
{QWidget *firstPageWidget = new QWidget;QPushButton *btn1 = new QPushButton("Page 1", this);		// 记得改 this// button 在后期可能实现较多的逻辑,需要将其分离出来
}
widget.cpp
#include "widget.h"
#include "firstpagewidget.h"Widget::Widget(QWidget *parent): QWidget(parent)
{firstPageWidget *first = new firstPageWidget;QWidget *secondPageWidget = new QWidget;QWidget *thirdPageWidget = new QWidget;// 去新分离出的文件中定义 buttonQPushButton *btn2 = new QPushButton("Page 2", secondPageWidget);QPushButton *btn3 = new QPushButton("Page 3", thirdPageWidget);QStackedWidget *stackedWidget = new QStackedWidget;stackedWidget->addWidget(first);stackedWidget->addWidget(secondPageWidget);stackedWidget->addWidget(thirdPageWidget);//    QListWidget *listWidget = new QListWidget;
//    QListWidgetItem *firstItem = new QListWidgetItem(tr("First"), listWidget);
//    QListWidgetItem *secondItem = new QListWidgetItem(tr("Sencond"), listWidget);
//    QListWidgetItem *thirdItem = new QListWidgetItem(tr("Third"), listWidget);//    listWidget->insertItem(0, firstItem);
//    listWidget->insertItem(1, secondItem);
//    listWidget->insertItem(2, thirdItem);QListWidget *listWidget = new QListWidget;listWidget->addItem(tr("First"));listWidget->addItem(tr("Second"));listWidget->addItem(tr("Third"));QHBoxLayout *layout = new QHBoxLayout;layout->addWidget(listWidget, 1);layout->addWidget(stackedWidget, 3);this->setLayout(layout);connect(listWidget, SIGNAL(currentRowChanged(int)), \stackedWidget, SLOT(setCurrentIndex(int)));this->resize(960, 600);}Widget::~Widget()
{
}

带 UI 的文件分离

以 UI 实现堆栈窗体为例。
在这里插入图片描述

form.cpp
#include "form.h"
#include "ui_form.h"Form::Form(QWidget *parent) :QWidget(parent),ui(new Ui::Form)
{ui->setupUi(this);ui->pushButton->setText("Page 1");		// 先往 UI界面 拖入一个 pushButton,然后写此行// 其他逻辑
}Form::~Form()
{delete ui;
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QtWidgets>
#include "form.h"
//#include "form2.h"
//#include "form3.h"namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private:Ui::Widget *ui;Form form1;
//    Form2 form2;
//    Form3 form3;
};#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);f1 = new Form;
//    f2 = new Form2;
//    f3 = new Form3;ui->stackedWidget->addWidget(f1);QObject::connect(ui->listWidget, SIGNAL(currentRowChanged(int)), \ui->stackedWidget, SLOT(setCurrentIndex(int)));
}Widget::~Widget()
{delete ui;
}

QTimer 定时器

QTimer(QObject * parent = 0);  // parent 可以传界面的指针,但是没有父子窗体关系,仅用作内存管理// 建议参数填上 this,否则需要在析构函数中 deletevoid	start(int msec);  		// 参数为 ms,定时一次,永久生效
void	stop();  				// 停止定时器Signals:
void	timeout();// 一次定时
void QTimer::singleShot(int msec, const QObject *receiver, const char *member) [static]receiver:接收者member:执行函数		1s = 1000ms 		1ms = 1000μs  		1μs = 1000ns

在这里插入图片描述

💡

做一个时间显示 Label / LCDNumber,增加“开始”和“结束”按钮,点击开始,每 1s 记录一次时间。

QDateTime

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

QDateTime time = QDateTime::currentDateTime();				// 获取系统此刻的日期和时间
QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd");	// 将系统时间转换成字符串类型// QTime 同理。

QTime

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

QLCDNumber

在这里插入图片描述
在这里插入图片描述

实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QtWidgets>namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);~Widget();private:Ui::Widget *ui;QTimer *timer;public slots:void mySlot();void recvSlot(QString);signals:void sendSignal(QString);private slots:void on_startBtn_clicked();			// 自动生成的槽void on_stopBtn_clicked();			// 自动生成的槽
};#endif // WIDGET_H
widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);timer = new QTimer(this);			// 必须填上 this,否则需要在析构函数中 deleteconnect(timer, SIGNAL(timeout()), this, SLOT(mySlot()));connect(this, SIGNAL(sendSignal(QString)), this, SLOT(recvSlot(QString)));
}void Widget::mySlot()
{QTime time = QTime::currentTime();QString str = time.toString("hh:mm:ss");//    QDateTime time = QDateTime::currentDateTime();    
//	  QString str = time.toString("yyyy-MM-dd hh:mm:ss dddd"); emit sendSignal(str);
}void Widget::recvSlot(QString str)
{ui->lcdNumber->setDigitCount(12);		// 设置显示的数字位数ui->lcdNumber->display(str);
}Widget::~Widget()
{delete ui;
}void Widget::on_startBtn_clicked()			// 自动生成的槽函数
{timer->start(1000);			// 自加内容
}void Widget::on_stopBtn_clicked()			// 自动生成的槽函数
{timer->stop();				// 自加内容
}

在这里插入图片描述

Qt Creator 常用快捷键

在这里插入图片描述

相关文章:

Qt工程文件分离、Qtimer定时器、Qt Creator 常用快捷键

Qt 工程文件分离 不含 UI 的文件分离 以堆栈窗体的代码为例。 firstpagewidget.h #ifndef FIRSTPAGEWIDGET_H #define FIRSTPAGEWIDGET_H#include <QtWidgets> // 记得修改class firstPageWidget : public QWidget {Q_OBJECT public:explicit firstPageWidget(QW…...

验收支撑-软件项目验收计划书

软件项目验收计划的作用主要有以下几点&#xff1a; 确保项目质量&#xff1a;通过项目验收&#xff0c;客户或相关方可以对项目的成果进行全面、系统的评估&#xff0c;以确保项目达到预期的质量标准。发现和解决问题&#xff1a;在项目开发过程中&#xff0c;难免会存在一些问…...

SQL注入绕过技术

预计更新SQL注入概述 1.1 SQL注入攻击概述 1.2 SQL注入漏洞分类 1.3 SQL注入攻击的危害 SQLMap介绍 2.1 SQLMap简介 2.2 SQLMap安装与配置 2.3 SQLMap基本用法 SQLMap进阶使用 3.1 SQLMap高级用法 3.2 SQLMap配置文件详解 3.3 SQLMap插件的使用 SQL注入漏洞检测 4.1 SQL注入…...

锂电池基础知识及管理方式总结

这两天在排查一个锂电池无法充电的问题&#xff0c;用的是电池管理芯片BQ25713&#xff0c;网上相关的资料也很少&#xff0c;查看数据手册时&#xff0c;里面也有很多术语参数等不是很理解&#xff0c;所以&#xff0c;在此对锂电池的基础知识做个简单的总结&#xff0c;方面后…...

小红书基于零信任 SASE 办公安全解决方案,斩获 “IDC 中国 20 大杰出安全项目”

近日&#xff0c;由 IDC 主办的 2023 全球 CSO 网络安全峰会&#xff08;中国站&#xff09;在京举行&#xff0c;峰会荟萃 300 生态伙伴和行业领袖&#xff0c;共同探讨新形势下的数据安全保护&#xff0c;畅议未来网络安全的可靠航道。 会上&#xff0c;“2023 IDC 中国20大杰…...

html通过CDN引入Vue使用Vuex以及Computed、Watch监听

html通过CDN引入Vue使用Vuex以及Computed、Watch监听 近期遇到个需求&#xff0c;就是需要在.net MVC的项目中&#xff0c;对已有的项目的首页进行优化&#xff0c;也就是写原生html和js。但是咱是一个写前端的&#xff0c;写html还可以&#xff0c;.net的话&#xff0c;开发也…...

【LabVIEW学习】5.数据通信之TCP协议,控制电脑的一种方式

一。tcp连接以及写数据&#xff08;登录&#xff09; 数据通信--》协议--》TCP 1.tcp连接 创建while循环&#xff0c;中间加入事件结构&#xff0c;创建tcp连接&#xff0c;写入IP地址与端口号 2.写入tcp数据 登录服务器除了要知道IP地址以及端口以外&#xff0c;需要用户名与密…...

uview1 的u-tabs组件在微信小程序中会出现横向滚动条

uview1 的u-tabs组件在微信小程序中会出现横向滚动条&#xff0c;真机才会生效&#xff0c;微信开发者工具没问题包括官方示例也会 原因&#xff1a;未屏蔽微信小程序的滚动条 解决办法&#xff1a;uview-ui中uview-ui/components/u-tabs/u-tabs.vue文件把h5屏蔽滚动条的条件编…...

服务器ipv6地址显示“scope global dadfailed tentative noprefixroute”无法连通的问题处理一例

服务器规模启用ipv6地址后&#xff0c;遇到一起案例 &#xff0c;配置的服务ipv6地址显示“scope global dadfailed tentative noprefixroute”&#xff0c;无法连通&#xff0c;现将解决过程记录如下。 一、问题情况 1、ipv6信息检查 某台服务器配置ipv6地址后&#xff0c…...

深度学习学习顺序梳理

https://www.bilibili.com/video/BV1to4y1G7xq/?spm_id_from333.999.0.0&vd_source9607a6d9d829b667f8f0ccaaaa142fcb 1.吴恩达机器学习课程 已学完&#xff0c;时间较久了&#xff0c;后续可以重新听一遍&#xff0c;整理一下笔记 2. 白板推导读西瓜书 统计学习方法看…...

机器学习实验六:聚类

系列文章目录 机器学习实验一&#xff1a;线性回归机器学习实验二&#xff1a;决策树模型机器学习实验三&#xff1a;支持向量机模型机器学习实验四&#xff1a;贝叶斯分类器机器学习实验五&#xff1a;集成学习机器学习实验六&#xff1a;聚类 文章目录 系列文章目录一、实验…...

逆向思考 C. Fence Painting

Problem - 1481C - Codeforces 思路&#xff1a;逆序考虑&#xff0c;因为每一块木板都是被最后一次粉刷所决定的。 从后往前开始&#xff0c;对于 c i c_i ci​来说&#xff0c; 如果这个颜色还有没有涂的木板&#xff0c;那么涂到其中一个木板即可如果这个颜色下没有未涂的…...

当当狸AR智能学习图集跨越千年文明传承,邀您“面对面”与虚拟诗人互动对诗

中华传统文化底蕴深厚&#xff0c;余韵悠长。即使经过千年的历史裂变&#xff0c;依然历久铭心慰藉着一代又一代人的灵魂。千百年后的今天&#xff0c;成为了我们独一无二的财富。 如今&#xff0c;国人学习中华传统文化的方式有很多&#xff0c;诗词集、动画影片、诗歌传颂等…...

CESM笔记——component活动状态+compset前缀解析+B1850,BHIST区别

时隔一年没写CSDN笔记了&#xff0c;一些CESM的知识点我都快忘了。诶&#xff0c;主要是在国外办公室的网屏蔽了好多国内的网络&#xff0c;CSDN登不上&#xff0c;回家又不想干活。。。好吧&#xff0c;好多借口。。。 昨天师弟问我一些问题&#xff0c;想想要不可以水一篇小…...

vue 页面跳转时,浏览器上方显示进度条

vue 页面跳转时&#xff0c;浏览器上方显示进度条 文章目录 vue 页面跳转时&#xff0c;浏览器上方显示进度条先看效果一、安装 nprogress二、main.js 引入nprogress1.引入库 三、在router.js中对路由钩子进行设置四、测试 先看效果 vue 页面跳转时&#xff0c;浏览器上方显示进…...

tqdm输出字符串被截断

tqdm输出截断 1.遇到的问题2.tqdm默认的字符串长度是80&#xff08;ncols属性&#xff09;3.修改tqdm的ncols属性4.本人字符串长度是64 1.遇到的问题 字符串打印&#xff0c;显示不完整&#xff0c; 2.tqdm默认的字符串长度是80&#xff08;ncols属性&#xff09; 3.修改tqdm的…...

Qt::UniqueConnection和lambda一块用无效

如果槽函数是lambda。 那么用了Qt::UniqueConnection也会出现槽函数被多次调用的问题。 原因&#xff1a; 参考官方文档&#xff1a; QObject Class | Qt Core 5.15.16https://doc.qt.io/qt-5/qobject.html#connect...

四川技能大赛——2023年四川网信人才技能大赛(网络安全管理员赛项)决赛

四川技能大赛——2023年四川网信人才技能大赛&#xff08;网络安全管理员赛项&#xff09;决赛 文章目录 四川技能大赛——2023年四川网信人才技能大赛&#xff08;网络安全管理员赛项&#xff09;决赛C1-比64少的bas - DONEC2-affine - DONEC3-简单的RSA - DONEM1-不要动我的f…...

死锁(面试常问)

1.什么是死锁 简单来说就是一个线程加锁后解锁不了 一个线程&#xff0c;一把锁&#xff0c;线程连续加锁两次。如果这个锁是不可重入锁&#xff0c;会死锁。两个线程&#xff0c;两把锁。 举几个例子&#xff0c;1.钥匙锁车里了&#xff0c;车钥匙锁家里了。2. 现在有一本书…...

GO设计模式——3、抽象工厂模式(创建型)

目录 抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09; 抽象工厂模式的核心角色 优缺点 代码实现 抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09; 抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;是围绕一个超级工厂创建其他…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...

yaml读取写入常见错误 (‘cannot represent an object‘, 117)

错误一&#xff1a;yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因&#xff0c;后面把yaml.safe_dump直接替换成yaml.dump&#xff0c;确实能保存&#xff0c;但出现乱码&#xff1a; 放弃yaml.dump&#xff0c;又切…...

基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)

注&#xff1a;文章末尾网盘链接中自取成品使用演示视频、项目源码、项目文档 所用硬件&#xff1a;STM32F103C8T6、无源蜂鸣器、44矩阵键盘、flash存储模块、OLED显示屏、RGB三色灯、面包板、杜邦线、usb转ttl串口 stm32f103c8t6 面包板 …...