QT C++ 自学积累 『非技术文』

news/2024/9/25 11:31:54/文章来源:https://www.cnblogs.com/wjw1014/p/18430961

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
}

暂时没有了~

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

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

相关文章

cameralink卡设计原理图:287-基于FMC接口的1路Base cameralink输入1路Base cameralink输出子卡

基于FMC接口的1路Base cameralink输入1路Base cameralink输出子卡 一、板卡概述 该板卡是我公司自主研发的1路Base cameralink输入,1路Base cameralink输出的FMC子卡,LPC-FMC连接器。FMC连接器是一种高速多pin的互连器件,广泛应用于板卡对接的设备中,特别是在xilinx公司的所…

Cannot open self /usr/local/bin/docker-compose or archive /usr/local/bin/docker-compose.pkg解决办法

安装docker-compose时候。出现错误 1、在线拉取太费劲。 最后使用的离线安装、、 参考内容。. github手动下载文件:https://github.com/docker/compose/releases/tag/1.25.0-rc4 选择-86版本的内容 将文件上传到/usr/local/bin/ 目录下,重命名为docker-compose,修改文件权限…

KBPC1010-LK-ASEMI新能源专用KBPC1010-LK

KBPC1010-LK-ASEMI新能源专用KBPC1010-LK编辑:ll KBPC1010-LK-ASEMI新能源专用KBPC1010-LK 型号:KBPC1010-LK 品牌:ASEMI 封装:KBPC-4 批号:2024+ 分类:整流桥 特性:整流方桥、整流桥 平均正向整流电流(Id):10A 最大反向击穿电压(VRM):1000V 恢复时间:>2000ns 结…

中电金信:源启智能视觉分析系统~助力各行业破局升级,释放新质生产力

​ 作为人工智能与计算机视觉的交叉范畴,智能视觉模仿人类视觉机能,来对各种形式的视觉输入予以处理、理解以及决策。当下,智能视觉已然发展为应用广泛、市场覆盖面大且形式多元的产业方向,获得了国家政策的强力支持。数字化时代搭台,国家政策助力。大量传统企业迫切希望通…

Linux 中awk命令同时指定多个分割符

001、[root@localhost test]# ls a.txt [root@localhost test]# cat a.txt ## 测试数据 aadd kk;gene=ABEK:ett 8735 fdfk jj;gene=IYNF:34DF UYG [root@localhost test]# awk -F "[gene=|:]" {print $2} a.txt ## 使用-F 参数无…

【随手记录】docker部署jenkins,集成maven、spring项目

1、下载镜像文件到服务器docker pull jenkins/jenkins:lts-jdk17或离线导入镜像:docker load -i jenkins-lts-jdk17检查镜像是否导入:docker images|grep jenkinsjenkins/jenkins lts-jdk17 7a7add0bf3da 2 weeks ago 470MB2024年6月以后国内很多大型的Docker镜像站…

CH585烧录

目前最新版本ISP工具还未更新至官网,旧版ISP工具还不包含CH585烧录选项。 可通过最新版本Mounriver Studio导出ISP工具, 除此之外,还需要更换下配置文件,右键Mounriver Studio打开文件所在位置,将名称为WCH55xISPDLL.dll的配置文件替换到该路径下:D:\MounRiver\MounRiver…

查看exe启动命令和参数

#qq.exe可以更换为任何正在运行的进程wmic process where caption="qq.exe" get caption,commandline /value

寄存器传值——函数剖析

寄存器传值导致的未定义行为寄存器传值——函数剖析 现象 实验环境:Ubuntu20,x86-64指令集 #include <stdio.h>int sum(int a, int b){return a+b; }int main() {int aa = sum(5,3);printf("%d, %d\n", 9);return 0; }编译器提示我们 printf()函数少一个参数…

Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Sep 2024)

Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Sep 2024)Windows 11 version 23H2 中文版、英文版 (x64、ARM64) 下载 (updated Sep 2024) Windows 11, version 23H2,企业版 arm64 x64 请访问原文链接:https://sysin.org/blog/windows-11/,查看最新版…

【YashanDB知识库】YAS-04110 invalid variant name

本文转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7369202.html?templateId=1718516 【标题】错误码处理 【问题分类】查询语句报错 【关键字】YAS-04110 【问题描述】执行特定sql时,遇到相应报错 【问题原因分析】字段中含有保留字,应使用双引号包裹字…

章14——Hashtable

键和值为NULL时会抛出空指针异常。KEY重复且无NULL时同样会替换,和HashMap是一样的。按照2倍+1的规律去扩容与HASHMAP对比PROPERTIES,也是MAP接口的实现类,是Hashtable的子类 .properties 文件通常是用于数据库的配置文件,储存数据库的用户名密码等东西 详细可见博客园博客…