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

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
}

暂时没有了~

http://www.lryc.cn/news/450807.html

相关文章:

  • 浅谈虚拟内存(操作系统、Redis)
  • 【LeetCode HOT 100】详细题解之链表篇
  • 二叉树的递归遍历
  • 国内访问OpenAI API
  • 深入 Spring RestTemplate 源码:掌握 HTTP 通信核心技术
  • 计算机网络:计算机网络概述 —— 初识计算机网络
  • set和map结构的使用
  • 2. qt_c++反射实例
  • 卷积神经网络(CNN)的计算量和参数怎么准确估计?
  • Ruby基础语法
  • 插入排序C++
  • 修改ID不能用关键字作为ID校验器-elementPlus
  • 一文详解WebRTC、RTSP、RTMP、SRT
  • 全国职业院校技能大赛(大数据赛项)-平台搭建Zookeeper笔记
  • 不同领域神经网络一般选择什么模型作为baseline(基准模型)
  • 华为-IPv6与IPv4网络互通的6to4自动隧道配置实验
  • 【spring中event】事件简单使用
  • leetcode每日一题day19(24.9.29)——买票需要的时间
  • 智源研究院推出全球首个中文大模型辩论平台FlagEval Debate
  • python实用脚本(二):删除xml标签下的指定类别
  • vue3 父子组件调用
  • 线性模型到神经网络
  • 【架构】前台、中台、后台
  • Stable Diffusion 蒙版:填充、原图、潜空间噪声(潜变量噪声)、潜空间数值零(潜变量数值零)
  • ffmpeg录制视频功能
  • 【LeetCode】每日一题 2024_10_1 最低票价(记忆化搜索/DP)
  • [C++] 小游戏 征伐 SLG DNF 0.0.1 版本 zty出品
  • 黑马头条day7-app端文章搜索
  • 嵌入式必懂微控制器选型:STM32、ESP32、AVR与PIC的比较分析
  • Python selenium库学习使用实操二