C/C++
文章平均质量分 73
C/C++
Lizhifun
From Zero To Hero
展开
-
Qt知识点梳理 —— 实现汉字转拼音全拼简拼及首字母
需求功能输入一句汉语,转换成拼音全拼、简拼、每个字首字母及整句话首字母;封装成单独的类,供后续使用方便;运行效果系统实现汉语转拼音://汉语转拼音QString CNLHelper::CNToPY(const QString &cnstr){ QStringList list; for (int i = 0; i < cnstr.length(); ++i) { int unicode = QString::number(cns原创 2021-01-31 18:12:43 · 2641 阅读 · 2 评论 -
Qt知识点梳理 —— 串口通信实现
简介Qt中使用 QSerialPort 和QSerialPortInfo来实现串口通信相关功能;界面设计代码实现首先需要在项目.pro文件中添加串口配置:QT += serialport使用QSerialPortInfo 查询电脑中所有可用串口//查找所有可用串口foreach(const QSerialPortInfo &info, QSerialPortInfo::availablePorts()){ ui->tb_PName->a...原创 2021-01-31 18:12:58 · 1458 阅读 · 0 评论 -
Qt知识点梳理 —— 记录程序运行日志并分类保存
需求功能0、记录程序关键位置运行日志;1、按照日期单独存放;2、将日志按照级别不同分类保存;3、日志格式需要固定;代码实现使用函数QtMessageHandler qInstallMessageHandler(QtMessageHandler);来实现,是全局的;参考说明文档首先定义并实现函数MessWriteLog :void (*QtMessageHandler)(QtMsgType, const QMessageLogContext &, const QSt.原创 2021-01-29 23:10:03 · 1915 阅读 · 0 评论 -
Qt知识点梳理 —— 无边框图片背景窗体实现
文章目录实现效果创建项目项目源码开发环境实现效果创建项目首先创建项目,选择QMainWindow或者QWidget都可以;窗体中加入Layout,选择Vertical Layout或者Horizontal Layout都可以,然后添加Widget控件在其中;在MainWindow.h中加入eventFilter事件:protected: bool eventFilter(QObject *watched, QEvent *evt)..原创 2021-01-29 23:10:23 · 531 阅读 · 0 评论 -
Qt知识点梳理 —— 获取设备CPU、内存、磁盘等硬件信息
文章目录简介WMIC指令具体实现获取电脑名称获取CPU信息获取CPU序列号获取内存信息获取第一个磁盘序列号获取磁盘信息获取操作系统信息获取主板序列号获取网卡MAC地址获取设备联网状态运行效果项目源码开发环境简介工业应用领域,我们经常需要获取设备的硬件及软件信息,用以做设备软硬件判断,在此将常用的方法汇总,以便后续直接调用; 源码中已将方法封装为标准类,欢迎补充;其中包括:电脑名称、CPU信息、CPU序列号、内存详细信息、磁盘序列号、原创 2021-01-27 23:01:22 · 5616 阅读 · 1 评论 -
Qt知识点梳理 —— 代码实现菜单栏工具栏
添加图标资源项目中添加新文件,选择QT—资源文件—输入名称“imgs”,其他选项默认添加到项目中;在imgs.qrc中,点击“Add Prefix”添加前缀,修改前缀名称后,点击“Add Files”添加图像;图像资源成功导入;...原创 2021-01-22 22:04:23 · 1482 阅读 · 0 评论 -
Qt知识点梳理 —— 国际化 QtLinguist 应用(2)
文章目录QSettings使用多语言设置运行效果项目源码开发环境在国际化 QtLinguist 应用(1) 中,已经生成了源语言和目的语言文件,这章来讲如何在程序中应用;QSettings使用通过QSettings将用户选择的语言信息存储到 ini 文件中,在系统启动时判断要使用的语言;将参数写入INI文件:void MainWindow::writeIniFile(QString content){ QSettings *settings = new .原创 2021-01-21 22:08:46 · 299 阅读 · 0 评论 -
Qt知识点梳理 —— 国际化 QtLinguist 应用(1)
文章目录新建项目绘制界面创建翻译文件翻译文件新建项目新建项目的时候,在Translation这一步需要选语言,本例以中英文为例,此处选择Chinese;此时项目创建完成后,程序目录下会多出一个语言文件 QtLinguist_zh_CN.ts :里面只有头文件,没有内容,如下:<?xml version="1.0" encoding="utf-8"?><!DOCTYPE TS><TS version="2.1" language=原创 2021-01-20 22:33:48 · 595 阅读 · 0 评论 -
Qt知识点梳理 —— XML文件操作
XML文档介绍XML(Extensible Markup Language),可扩展标记语言;是一种标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。(维基百科)XML文档结构<?xml version="1.0" encoding="UTF-8"?><param> <name>light val</name> <value>25</value><原创 2021-01-19 22:32:12 · 2523 阅读 · 1 评论 -
Qt知识点梳理 —— TCP通信实现
系统结构分别建立服务端与客户端,系统运行后启动服务端,并建立起一个客户端,如图:执行效果项目源码若要使用Qt套接字,需要在项目.pro文件(本例为:012_TCP.pro)中加入QT += network客户端ClientWidget.h#ifndef CLIENTWIDGET_H#define CLIENTWIDGET_H#include <QWidget>#include <QTcpSocket>//通信套接字#incl...原创 2021-01-18 23:00:07 · 366 阅读 · 0 评论 -
Qt知识点梳理 —— 自定义数据结构序列化与反序列化
定义序列化:将对象或数据结构转换为二进制序列反序列化:二进制序列转换为对象或数据结构使对象或数据结构更方便地在网络上传输或者保存在本地文件中。本文展示通过序列化将自定义数据结构序列化到硬盘文件中,再从文件反序列出来还原数据信息。Qt中序列化与反序列化Qt中使用QDataStream类实现对象序列化;序列化:QFile file("file.rx"); //定义文件路径file.open(QIODevice::WriteOnly); //以只写模式打开Q原创 2021-01-18 22:43:35 · 3863 阅读 · 0 评论 -
Qt知识点梳理 —— 静态函数发送信号
应用场景在编写相机程序时,使用了相机的回调函数,此回调函数为静态成员函数,在需要发送的信号时发现静态成员函数直接发送信号会有问题;非静态成员函数的非法调用。如下图:思路原理新建一个类,静态函数发送信号,用新建的类接收,然后再将这个信号发送出去。项目案例特意写了案例,ToolA类中静态函数发送信号,由MainWindow接收,如下:ToolA.h#ifndef TOOLA_H#define TOOLA_H#include <QObject>class原创 2021-01-14 20:19:53 · 6712 阅读 · 8 评论 -
Qt知识点梳理 —— NameSpace命名空间
命名空间作用:命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突;如解决问题:【异常】间接寻址级别不同C++中,命名空间使用namespace来声明,并使用{ }来界定命名空间的作用域,例如:namespace func{ int age=18;}标准命名空间:C++中标准命名空间std,std 是 standard 的缩写,意思是“标准命名空间”;C++标准库中的函数或者对象都是在命名空间std中定义的;Qt中有自带namespace原创 2021-01-13 19:52:46 · 9789 阅读 · 3 评论 -
Keil 警告:UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS
编译程序时出现以下警告,看网上说可以是警告不再提示,本人觉得不能回避问题,应该找出问题,排除问题,以免程序运行时还是会出错,达不到需要效果或程序运行不稳定。***WARNINGL16:UNCALLEDSEGMENT,IGNOREDFOROVERLAYPROCESS说是这个警告表示存在定义了未调用的函数,但是我今天碰到的压根就不是这个原因。#include #inclu原创 2015-10-09 13:34:29 · 114235 阅读 · 6 评论 -
51单片机作为下位机程序
本代码段是在网上下载,然后根据自己的需求修改的,亲测,效果很好51单片机作为下位机程序,本代码段实现两个功能:1、控制LED灯按指定规则显示2、将接收的上位机数据返回给上位机源代码在这儿:http://download.csdn.net/detail/tingzhiyi/9173485#include #include #include #defin转载 2015-10-12 13:55:03 · 3456 阅读 · 1 评论 -
C++ 从函数返回指针(函数外返回局部静态变量的地址)
C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。错误代码:int main(){ int *p; p=funcGetPointer(); for (int i = 0; i < 10; i++) { cout<<"*(p+"<<i<<"): "; cout<<*(p+i)<<en原创 2017-07-18 18:58:13 · 3601 阅读 · 1 评论 -
C++ 类构造函数 & 析构函数
类的构造函数是一种特殊的函数,在创建一个新的对象时调用。类的析构函数也是一种特殊的函数,在删除所创建的对象时调用。类的构造函数类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。下面的实例有助于更好地理解构造函数的概念:原创 2017-07-18 19:06:51 · 570 阅读 · 0 评论 -
C++ 数据结构(结构体struct)
定义结构体:下面是声明一个结构体类型 MyBook,变量为 book://定义结构体struct MyBook{ char name[20]; char author[10]; char abstract[27]; int number;} book;访问结构体:为了访问结构的成员,我们使用成员访问运算符(.)。成员访问运算符是结构变量名称和原创 2017-07-18 19:09:56 · 2404 阅读 · 0 评论 -
C++ 继承
一个类可以派生自多个类,这意味着,它可以从多个基类继承数据和函数。定义一个派生类,我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类命名。实例:#include using namespace std; //基类class Shape{ protected: double width; double height;原创 2017-07-18 19:11:20 · 352 阅读 · 0 评论 -
C++引用(作为函数参数和返回值)
一、引用简介引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名;eg:int a; int &b=a; //定义引用b,它是变量a的引用,即别名说明:(1)&在此不是求地址运算,而是起标识作用。(2)类型标识符是指目标变量的类型。(3)声明引用时,必须同时对其原创 2017-07-18 19:14:40 · 13396 阅读 · 0 评论 -
C++多态(虚函数)
多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。下面的实例中,基类 Shape 被派生为两个类,如下所示:#include using namespace std;class Shape{ protected: int l原创 2017-07-18 19:20:17 · 356 阅读 · 0 评论 -
C++ 文件和流
C++ 文件和流如何从文件读取流和向文件写入流,这就需要用到 C++ 中一个标准库 fstream,它定义了三个新的数据类型:数据类型描述ofstream该数据类型表示输出文件流,用于创建文件并向文件写入信息。ifstream该数据类型表示输入文件流,用于从文件读取信息。fstream该数据类原创 2017-07-18 19:24:31 · 709 阅读 · 0 评论 -
C++ 异常处理
异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:try、catch、throw。throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。catch: 在您想要处理问题的地方,通过异常处理程序捕获异常。catch 关键字用于捕获原创 2017-07-18 19:27:41 · 1267 阅读 · 0 评论 -
C++怎样产生任意指定范围的随机数
srand(time(NULL));之后调用rand()即可得到0 ~ 32757范围的随机数包含头文件stdlib.h和time.h 或 cstdlib和ctime#include #include 或#include #include 用下列公式即可得到指定范围[m,n]的随机数:r = rand()%(n - m + 1) + m;注意:n - m 的原创 2017-07-18 18:54:26 · 7429 阅读 · 0 评论