QT C++ 自学积累 『非技术文』
QT C++ 自学积累 『非技术文』
最近一段时间参与了一个 QT 项目的开发,使用的是 C++ 语法,很遗憾的是我之前从来没有接触过 C++ ,大学没有开过这堂课,也没用自己学习过,所有说上手贼慢,到现在为止其实也不是很清楚具体的开发技巧,毕竟是参与,东一复制西一粘贴的,就拉倒了。里面用到了很多东西,尽管很简单很简单,但是对于没有接触过的人来说还是很值得记录一下的,这篇博文只是自己学习记录,没啥营养,浅看则以,切勿尽信!对了,用的 QT5 哈,其他版本的不知道嗷!
QDebug 打印
在项目开发过程中难免遇到打印调试数据,打印数据很简单,引入 QDebug,然后就可以使用了:
#include <QDebug>qDebug() << "hello, I'm + V";
看一下效果:
开启弹窗 Dialog
这玩意儿,首先得有弹窗文件,有弹窗文件就好说了,直接调用一下让他弹出来就行,比如做了一个叫做 GPUDialog 的弹窗:
#include "GPUDialog.h" // 引入弹窗文件GPUDialog gpuDialog; // 实例化一个弹窗
gpuDialog.exec(); // 打开弹窗
写入配置文件
在QT里面嘞,有些配置数据可能需要写入配置文件,然后怎么写呢,用 QSetting:
#include <QSettings>// 创建 QSettings
QSettings* setting = new QSettings("./config.ini", QSettings::IniFormat);
setting->setValue("ed/name", "+V"); // 写入配置
setting->setValue("ed/age", 18); // 写入配置QString name = setting->value("ed/name").toString(); // 读取配置
QString age = setting->value("ed/age").toString(); // 读取配置
qDebug() << name << age;
看一下打印结果:
当然配置文件内容也可以看一下,是这个样子的:
弹出警示框
比如说,我们点击一个表单的提交按钮,如果没有输入表单数据,就需要提示用户清闲输入内容。
#include <QMessageBox>QString warningTitle(tr("Data is empty"));
QMessageBox::warning(this, warningTitle, tr("Please enter the data first and try again!"), QMessageBox::Ok);
弹出确认框
这个和上面的是差不多的,比如我们需要点击一个 “运行” 按钮,需要二次确认的时候,经常用到这种弹窗:
#include <QMessageBox>QMessageBox::StandardButton response = QMessageBox::question(nullptr, "Kill Exe Confirm", "Secondary Confirmation Dialogue Box Demonstration", QMessageBox::Yes | QMessageBox::No);
if (response == QMessageBox::Yes)
{qDebug() << "Yes";
} else {qDebug() << "No";
}
看一下效果:
然后看一下控制台打印的数据:
关闭第三方 exe 程序
比如说我们写一个程序,在程序需要执行的时候,需要关闭掉其他应用程序,就像是某些付费视频,配套专用的播放器,启动播放器的时候,他会把你电脑启动的截图、录屏插件全部强制杀死,就是一样的功能,不如下面案例,杀死 PixPin.exe 程序:
#include <QProcess>QString progress = "taskkill /im PixPin.exe /f";
QProcess::execute(progress);
创建文件夹
创建文件夹就肯简单了,两行命令完成:
#include <QDir> // 引入库QDir dir;
dir.mkpath("./wjw"); // 创建文件夹
看一下,在当前exe同级目录下就会出现我们创建的文件夹:
创建文件
创建文件和创建文件夹功能类似,但是代码有些区别:
#include <QDir> // 引入库QDir dirPath("./");
QString filePathStr = dirPath.filePath("wjw.txt");
QFile file(filePathStr);
if (!file.open(QIODevice::WriteOnly)) { return; }
file.close();
嘿嘿,再看一下结果,这个文件出来啦 :
输入框输入格式校验
// 实现文本框只允许输入float类型
#include <QDoubleValidator>QDoubleValidator* validator = new QDoubleValidator(this);
validator->setNotation(QDoubleValidator::StandardNotation);
this->ui->lineEdit->setValidator(validator);// 实现文本框只允许输入int类型
#include <QIntValidator>QIntValidator* validatorInt = new QIntValidator(this);
this->ui->lineEdit_2->setValidator(validatorInt);
获取网络日期
我们有的时候需要获取网络时间,这个时候就用下面的方法:
#include <QDateTime>
#include <QTcpSocket>
#include <QDate>// 获取网络时间,如果没有获取到,则获取系统时间
QString Widget::getNetTime() {QStringList urls;urls << "time-b-g.nist.gov"<< "time-c-g.nist.gov"<< "time-d-g.nist.gov"<< "time-e-g.nist.gov"<< "time-a-wwv.nist.gov"<< "time-b-wwv.nist.gov"<< "time-c-wwv.nist.gov"<< "time-d-wwv.nist.gov"<< "time-e-wwv.nist.gov"<< "time-a-b.nist.gov"<< "time-b-b.nist.gov"<< "time-c-b.nist.gov"<< "time-d-b.nist.gov"<< "time-e-b.nist.gov"<< "time.nist.gov"<< "utcnist.colorado.edu"<< "utcnist2.colorado.edu";bool isFind = false;QString netTime = "";QTcpSocket *socket = new QTcpSocket();for (int i = 0; i < urls.size(); i++){socket->connectToHost(urls.at(i), 13);if (socket->waitForConnected()){if (socket->waitForReadyRead()){QString str(socket->readAll());netTime = str.trimmed();netTime = str.section(" ", 1, 2);isFind = true;break;}}socket->close();}if(isFind){QDateTime utcDateTime = QDateTime::fromString(netTime, "yy-MM-dd HH:mm:ss");utcDateTime.setTimeSpec(Qt::UTC);netTime = utcDateTime.toLocalTime().toString("yy-MM-dd");} else {QDateTime currentDateTime = QDateTime::currentDateTime();netTime = currentDateTime.toString("yy-MM-dd");}delete socket;return netTime;
}
获取 CPU 序列号
#include <QProcess>
#include <windows.h>
#include <QStringList>// 获取CPU序列号
QString Widget::getCpuId()
{QProcess p;QString cmd = "wmic cpu get processorid";p.start(cmd);p.waitForFinished();QString result = QString::fromLocal8Bit(p.readAllStandardOutput());QStringList list = cmd.split(" ");result = result.remove(list.last(), Qt::CaseInsensitive);result = result.replace("\r", "");result = result.replace("\n", "");result = result.simplified();return result ;
}
获取系统硬盘信息
#include <QProcess>
#include <windows.h>
#include <QStringList>// 获取硬盘信息
QString Widget::getDiskID()
{QProcess p;QString cmd = "wmic diskdrive get model";p.start(cmd);p.waitForFinished();QString result = QString::fromLocal8Bit(p.readAllStandardOutput());QStringList list = cmd.split(" ");result = result.remove(list.last(), Qt::CaseInsensitive);result = result.replace("\r", "");result = result.replace("\n", "");result = result.simplified();return result ;
}
获取 MAC 编码
#include <QNetworkInterface>// 获取MAC编码
QString Widget::GetMacByNetworkInterface() {QList<QNetworkInterface> NetList;//网卡链表int NetCount = 0;//网卡个数int Neti = 0;QNetworkInterface thisNet;//所要使用的网卡NetList = QNetworkInterface::allInterfaces();//获取所有网卡信息NetCount = NetList.count();//统计网卡个数for (Neti = 0; Neti < NetCount; Neti++) {//遍历所有网卡if (NetList[Neti].isValid()) {//判断该网卡是否是合法thisNet = NetList[Neti];//将该网卡置为当前网卡break;}}return thisNet.hardwareAddress().replace(":", "-"); //获取该网卡的MAC
}
暂时没有了~
相关文章:
QT C++ 自学积累 『非技术文』
QT C 自学积累 『非技术文』 最近一段时间参与了一个 QT 项目的开发,使用的是 C 语法,很遗憾的是我之前从来没有接触过 C ,大学没有开过这堂课,也没用自己学习过,所有说上手贼慢,到现在为止其实也不是很清楚…...
浅谈虚拟内存(操作系统、Redis)
浅谈虚拟内存(操作系统、Redis) 参考&鸣谢 4.1 为什么要有虚拟内存? xiaolincoding 【简单说下】REDIS的虚拟内存机制,会吗?别翻书 aristo_boyunv Redis 虚拟内存 Java杨永杰 浅谈虚拟内存:操作系统与 Redis 在计算机系统中…...
【LeetCode HOT 100】详细题解之链表篇
LeetCode HOT 100题解之链表篇 160 相交链表题目分析代码 206 反转链表方法一:迭代 234 回文链表方法一:将值复制到数组中方法二:快慢指针 141 环形链表方法一:哈希表方法二:快慢指针 142 环形链表II方法一:…...
二叉树的递归遍历
方法论 确定递归函数的参数和返回值 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。 确定终止条件 写完了递归算法, 运行的时候,经常会遇到栈溢…...
国内访问OpenAI API
最近在学习LLM。绕不过去的肯定要学习OpenAI。 国内想直接使用官方API十分麻烦。就到处查资料及网友的分享。发现了这个代理可以在国内很方便的使用OpenAI API。 代理的地址如下: https://referer.shadowai.xyz/r/1014150 经过一段实际体验下来,这个…...
深入 Spring RestTemplate 源码:掌握 HTTP 通信核心技术
在上一篇文章《Spring Boot 项目高效 HTTP 通信:常用客户端大比拼!》里,我们提到了RestTemplate,它是Spring框架提供的Http客户端,在springboot项目开发过程中,属于使用最为广泛的 HTTP 客户端之一了。今天…...
计算机网络:计算机网络概述 —— 初识计算机网络
文章目录 计算机网络组成部分网络架构协议与标准网络设备网络类型作用实际应用案例 计算机网络 计算机网络是指将多台计算机通过通信设备和通信链路连接起来,以实现数据和信息的交换和共享的技术和系统。它是现代信息社会的基础设施之一,也是互联网的基…...
set和map结构的使用
个人主页:敲上瘾-CSDN博客 个人专栏:游戏、数据结构、c语言基础、c学习、算法 目录 一、序列式容器和关联式容器 二、set和multiset 1.insert 2.erase 3.find 4.count 三、map和mapmulti 1.pair 2.insert 3.find 4.operator[ ] 5.erase 6.lo…...
2. qt_c++反射实例
目录 使用场景元对象相关类及宏常用功能获取类相关内容以及委托调用 使用场景 Qt基于强大的元对象系统实现反射机制; 在复杂的开发需求中,我们希望通过一些手段映射出我们的类(映射对象) 然后直接使用,通过࿰…...
卷积神经网络(CNN)的计算量和参数怎么准确估计?
🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 1. 卷积层(Convolutional Layer) a) 计算量估计: 卷积层的 FLOPs 2 * H_out * W_out * C_in * C_out * K_h * K_w 详细解释: H_out, W_outÿ…...
Ruby基础语法
Ruby 是一种动态、反射和面向对象的编程语言,它以其简洁的语法和强大的功能而受到许多开发者的喜爱。以下是 Ruby 语言的一些基本语法: 1. 打印输出 puts "Hello, Ruby!" 变量赋值 x 10 name "John" 2. 数据类型 Ruby 有多种…...
插入排序C++
题目: 样例解释: 【样例解释 #1】 在修改操作之前,假设 H 老师进行了一次插入排序,则原序列的三个元素在排序结束后所处的位置分别是 3,2,1。 在修改操作之后,假设 H 老师进行了一次插入排序,则原序列的三个…...
修改ID不能用关键字作为ID校验器-elementPlus
1、校验器方法 - forbiddenCharValidator const idUpdateFormRef ref(null); const forbiddenCharValidator (rule, value, callback) > {const forbiddenCharacters [as,for,default,in,join,left,inner,right,where,when,case,select];for (let forbiddenCharacter o…...
一文详解WebRTC、RTSP、RTMP、SRT
背景 好多开发者,希望对WebRTC、RTSP、RTMP、SRT有个初步的了解,知道什么场景该做怎样的方案选择,本文就四者区别做个大概的介绍。 WebRTC 提到WebRTC,相信好多开发者第一件事想到的就是低延迟,WebRTC(W…...
全国职业院校技能大赛(大数据赛项)-平台搭建Zookeeper笔记
ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务,为分布式应用提供一致性服务。它的设计目标是简化分布式系统的管理,保证多个节点之间的数据一致性和协调工作。ZooKeeper提供了类似文件系统的层次化命名空间,用来存储和管理元数…...
不同领域神经网络一般选择什么模型作为baseline(基准模型)
在神经网络研究中,选择合适的baseline(基线模型)是评估新方法有效性的重要步骤。基线模型通常是领域内公认的、性能良好的参考模型,用于比较和验证新提出模型的优势。以下是一些在不同任务和领域中常见的基线模型选择:…...
华为-IPv6与IPv4网络互通的6to4自动隧道配置实验
IPv4向IPv6的过渡不是一次性的,而是逐步地分层次地。在过渡时期,为了保证IPv4和IPv6能够共存、互通,人们发明了一些IPv4/IPv6的互通技术。 本实验以6to4技术为例,阐述如何配置IPv6过渡技术。 配置参考 R1 # sysname R1 # ipv6# interface GigabitEthernet0/0/1ip address 200…...
【spring中event】事件简单使用
定义事件类 /* * 1. 定义事件类 * 首先,我们创建一个自定义事件 UserRegisteredEvent,用于表示用户注册事件。 * */ public class UserRegisteredEvent extends ApplicationEvent {private final String email;public UserRegisteredEvent(Object sourc…...
leetcode每日一题day19(24.9.29)——买票需要的时间
思路:在最开始的情况下每人需要买的票数减一是能保持相对位置不变的, 如果再想减一就有可能 有某些人只买一张票,而离开了队伍, 所有容易想到对于某个人如果比当前的人买的多就按当前的人数量算 因为在一次次减一的情况下…...
智源研究院推出全球首个中文大模型辩论平台FlagEval Debate
近日,智源研究院推出全球首个中文大模型辩论平台FlagEval Debate,旨在通过引入模型辩论这一竞争机制对大语言模型能力评估提供新的度量标尺。该平台是智源模型对战评测服务FlagEval大模型角斗场的延展,将有助于甄别大语言模型的能力差异。 F…...
python实用脚本(二):删除xml标签下的指定类别
介绍 在目标检测中,有些时候会遇到标注好的类别不想要了的情况,这时我们可以运行下面的代码来批量删除不需要的类别节省时间。 代码实现: import argparseimport xml.etree.ElementTree as ET import osclasses [thin_smoke]def GetImgNam…...
vue3 父子组件调用
vue3 父子组件调用 父组件调用子组件方法 子组件使用defineExpose将方法抛出 父组件定义 function,子组件通过 defineExpose 暴露方法,父组件通过 ref 获取子组件实例,然后通过 ref 获取子组件方法。 // 父组件 <template><div>…...
线性模型到神经网络
🚀 在初始神经网络那一节(链接如下:初始神经网络)的最后,我们通过加大考虑的天数使得我们最后得到的模型Loss最终停留在了0.32k,当我们在想让模型更加准确的时候,是做不到的,因为我们…...
【架构】前台、中台、后台
文章目录 前台、中台、后台1. 前台(Frontend)特点:技术栈: 2. 中台(Middleware)特点:技术栈: 3. 后台(Backend)特点:技术栈: 示例场景…...
Stable Diffusion 蒙版:填充、原图、潜空间噪声(潜变量噪声)、潜空间数值零(潜变量数值零)
在Stable Diffusion中,蒙版是一个重要工具,它允许用户对图像的特定部分进行编辑或重绘。关于蒙版蒙住的内容处理选项,包括填充、原图、潜空间噪声(潜变量噪声)、浅空间数值零(潜变量数值零)&…...
ffmpeg录制视频功能
本文目录 1.环境配置2.ffmpeg编解码的主要逻辑:3. 捕获屏幕帧与写入输出文件4. 释放资源 在录制结束时,释放所有分配的资源。5.自定义I/O上下文6.对于ACC编码器注意事项 1.环境配置 下载并安装FFmpeg库 在Windows上 从FFmpeg官方网站下载预编译的FFmpeg…...
【LeetCode】每日一题 2024_10_1 最低票价(记忆化搜索/DP)
前言 每天和你一起刷 LeetCode 每日一题~ 大家国庆节快乐呀~ LeetCode 启动! 题目:最低票价 代码与解题思路 今天这道题是经典动态规划,我们定义 dfs(i) 表示从第 1 天到 第 i 天的最小花费,然后使用祖传的:从记忆…...
[C++] 小游戏 征伐 SLG DNF 0.0.1 版本 zty出品
目录 先赞后看 养成习惯 War and Expedition SLG DNF 0.0.1 version 讲人话就是 图标解释: 绿色代表空地,可通过,对应数值 0 蓝色“~ ”为水,不可通过,对应数值 1 棕色“”为桥梁,可通过࿰…...
黑马头条day7-app端文章搜索
今天的内容也只是跑了一下 对于具体的实现掌握的很差 仔细看 es 在微服务学的es使用基本忘光了 这里用起来一点都熟悉 重学!!! kafka异步 文章自动构建索引的时候用到了‘’ mongoDB 用来存储用户的搜索记录 遗忘(拦截器 j…...
嵌入式必懂微控制器选型:STM32、ESP32、AVR与PIC的比较分析
目录 1 微控制器基础概述 1.1 微控制器基本概念 1.2 工作原理及架构 1.3 STM32、ESP32、AVR和PIC简介 2 微控制器性能比较分析 2.1 性能比较 2.2 功耗比较 2.3 功耗分析 2.4 外设接口对比 3 应用场景与选择策略 3.1 物联网应用场景 3.2 工业控制场景 3.3 智能家居场…...
wordpress菜单调用图片/c++线上培训机构哪个好
本文是读《Spring Boot2精髓-从构件小系统到架构分布式大系统》的读书笔记。 JavaEE简介 JavaEE对于如下的功能需求,有相应的规范实现与之对应: Web支持:Servlet规范,规定了Web容器、Servlet组件。 事务支持:JavaEE提…...
dynamik wordpress/推广普通话黑板报
1) 如果你同时从同一客户插入很多行,使用多个值表的INSERT语句。这比使用分开INSERT语句快(在一些情况中几倍)。 Insert into test values(1,2),(1,3),(1,4)…2) 如果你从不同客户插入很多行,能通过使用INSERT DELAYED语句得到更高的速度。Delayed的含…...
国外网站发展建设/优化师
/***************************************************************************** #define | enum(enumerator)* 声明:* 今天突然在Linux内核看到枚举和宏,感觉是一样的功能,于是找了一下他们* 之间差异。** …...
学校网站建设的验收单/营销方案包括哪些内容
2019独角兽企业重金招聘Python工程师标准>>> 一般,页面上会分为很多部分,而不同的部分更新的频率是不一样的。如果对整个页面采用统一的缓存策略则不太合适, 而且很多系统的页面左上角都有一个该死的“Welcome XXX”。这种特定于…...
做视频网站需要多大带宽/成都seo排名
https://chart.googleapis.com/chart?chtqr&chs150x150&choeUTF-8&chldL|4&chl%E8%BF%99%E9%87%8C%E6%89%93%E6%96%87%E5%AD%97 chl为需要生成的文字转载于:https://www.cnblogs.com/sxmny/archive/2012/11/18/2776383.html...
阿里企业邮箱客服/搜索引擎外部链接优化
花了近一天的时间,总算把Lenovo-Vista-Chs-Rdvd-Um下载完(2.45G),刻盘后安装系统。安装过程中没碰到什么问题,但第一次久未进入系统,起初认为是系统仍要作初始化之类的工作,等了很长时间未见反应…...