![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 57
KeepLiang
windows客户端、Qt
展开
-
Qt svg保存为png
qt svg高清保存到png原创 2023-01-28 21:20:39 · 635 阅读 · 0 评论 -
QT通过QStyle自定义滚动条
在qt里面有默认的滚动区域可以方便使用,QScrollArea,这个自带了水平和垂直滚动条。但是这些默认样式一般不是我们想要的,例如很多时候我们只需滚动块,而不需要其他的控件。例如效果:现在介绍自定义滚动条。1.关闭默认滚动条显示在使用QScrollArea时,垂直和水平滚动条全部不展示: area->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); area->setHorizontalScrollBa.原创 2022-04-04 20:25:36 · 3028 阅读 · 3 评论 -
libcef和js交互
1.下载libcef_wrapper工程:https://cef-builds.spotifycdn.com/index.html#windows32 这是别人编译好的工程,libcef只提供了C语言api,lib_warpper是一个对C接口进行包装的工程。原创 2021-07-11 17:10:16 · 657 阅读 · 1 评论 -
从汇编角度看一个C函数调用
简单的来个C函数调用:#include<stdio.h>int Add(int a, int b){ return a + b;}void main(){ int a = 20; int b = 30; int res = Add(a, b); printf("%d\n", res);}通过od打开后,main函数的反汇编如下:PUSH EBP; assignment.00D81010(guessed void)MOV EBP, ESPSUB E..原创 2021-03-16 15:34:49 · 264 阅读 · 0 评论 -
unicode、多字节和utf8互转
#include<windows.h>#include<stdlib.h>#include<string>//多字节转为utf8int MultiByToUtf8(const char *multi,char *&utf8){ int size = 0; size = MultiByteToWideChar(CP_ACP, NULL, m...原创 2019-11-02 09:58:59 · 259 阅读 · 0 评论 -
宏#和##
#和##这两个宏在项目中见到,所以特意记录一些笔记下来,方便以后查看!宏##是把其左边的参数字符串化,其实就是为其加上了"",例如:#define _STR(x) #x //为x加上""std::cout<<_STR(abc);当我们打印后,输出:abc如果传入的是字符串:std::cout<<_STR("abc");那么输出的是带...原创 2019-10-26 10:57:46 · 3452 阅读 · 0 评论 -
课程设计总结之Qt(1)
经过这几天不断百度、查看博客,终算是把这个课程设计完成了。在此写篇博客来总结身为Qt小白的我在这几天的流程和遇到的问题。在开始这个课程设计前,我们上了一门用VB和ACCESS进行数据交互的数据库设计课程,练习代码老师完整给出,这次的课程设计就是基于这门课的。但我考虑到个人原因,选择了Qt和mysql,Qt是5.4,mysql是5.7,Windows下的Qt只有32位,所以mysql我装了32位...原创 2018-12-11 16:21:47 · 3072 阅读 · 0 评论 -
课程设计总结之Qt(2)
数据库增删改查:Qt里面有很多和操作数据库相关的类库:QSqlQuery对象查询: getid=ui->inputid->text(); //获取文本内容 QSqlDatabase::database().contains(); //数据库开始一个事务 QSqlQuery query; //建立查询语句 query.exec("se...原创 2018-12-11 17:52:15 · 498 阅读 · 0 评论 -
课程设计总结之Qt(3)
串口连接:要写上位机,必不可少的就是串口的监听,接收到的一定格式的数据,然后读取、写入数据库。本次课程设计的用到的发送格式为"ID=xxx;T=xx.x;H=xx;"接收数据最麻烦就是接收的不完整的数据,导致读取数据库失败,所以发送格式就显得比较重要。只要学会串口的连接,写个串口调试助手也是非常的简单,本次课程设计我就是在程序中嵌入了Qt写的串口调试助手:串口连接:新建一个类为se...原创 2018-12-12 09:48:44 · 817 阅读 · 0 评论 -
中缀表达式转后缀表达式
后缀表达式又叫逆波兰表达式,在使用逆波兰表达式时,不需要括号,操作符在操作数的后面,不需要考虑优先级,仅仅是把栈顶的两个元素进行操作,操作完后又进栈,直到没有操作符后,栈顶则是结果。维基百科的解释:逆波兰表达式的解释器一般是基于堆栈的。解释过程一般是:操作数入栈;遇到操作符时,操作数出栈,求值,将结果入栈;当一遍后,栈顶就是表达式的值。因此逆波兰表达式的求值使用堆栈结构很容易实现,并且能很快求...原创 2019-01-27 12:58:29 · 204 阅读 · 0 评论 -
正则表达式
正则表达式(regular expression)包含在C++的regex库中,正则表达式用于查找、替换字符。在regex库中,有3个常用的接口。1.regex_match:regex_match()是全匹配,只有目标字串符合匹配模式才能匹配成功。string dat = "example:<hello>regex<world>";regex reg("&l...原创 2019-04-12 21:33:51 · 135 阅读 · 0 评论 -
C++之string基本操作
熟悉STL里面的数据结构对我们做算法题有非常大的帮助,博主在Leetcode上做题就深感对STL的不熟练带来的尴尬,大多停留在C语言的思想做题。而熟悉STL不但可以优化算法,还可以装逼。string类简化我们对字符串的操作,想想C语言的字符串的增删改查,一不小心就Bug了。string还封装了专门用于宽字符的wstring,操作基本都一样。构造函数:string有重载了非常多构造函数,...原创 2019-05-19 15:49:06 · 5552 阅读 · 1 评论 -
C++学习--Lambda表达式
Lambda的形式是[函数对象参数](操作符重载函数参数)某种声明(例如:mutable)->返回值类型{函数体};Lambda的调用方式有两种,一种是直接在整个Lambda表达式后面带上(),因为Lambda表达式就是函数指针,函数指针带上()就是调用,另一种是起一个别名,即使把Lambda赋值给一个变量名,通过变量名+()进行调用。直接看它的定义时非常难懂的,简单来说[ ]里的是...原创 2018-12-04 09:26:22 · 807 阅读 · 0 评论 -
课程设计总结之Qt(4)
捕捉窗口关闭事件:在写界面时,为了交互性更好,我们通常需要捕捉窗口的某些事件,然后给用户提示。比如:用户要点击关闭时,友好地提示一下用户是否真的关闭窗口。这就需要捕捉窗口的关闭事件,首先需要在头文件中包含:#include<QCloseEvent>。在Qt中,所有的窗口类均有一个虚函数处理窗口的关闭事件(继承于QWidget的保护成员函数):void closeEvent(QC...原创 2018-12-13 13:59:55 · 793 阅读 · 0 评论 -
C++学习--构造函数和析构函数
构造函数是对对象进行初始化的成员函数,构造函数的名字和类的名字是一样的,构造函数不用特定的调用,是在类实例化中,自动调用。构造函数可以有多个,也就是可以进行构造函数重载,实例化过程中会根据构造函数的参数类型、个数进行调用。析构函数和构造函数相反,是完成一些清理工作,比如释放内存或者其他的工作。析构函数不能重载,一个类只能有一个析构函数。1.没有参数的构造函数C++的类成员属性默认是私有的,...原创 2018-10-12 13:25:34 · 134 阅读 · 0 评论 -
C++学习--函数重载
C++支持函数的重载,函数的重载说的是在同一个程序出现多个同名的函数,实现的是同一类的功能。例如:求和,有时需要求整型的和、有时求浮点型的和,有时求和的个数不同。所以,函数的重载在这方面给程序提供了极大的便利。函数重载需要参数个数、参数类型或者参数顺序三者至少要有一种不同。因为系统是根据参数找到对应的函数进行调用的。而函数返回值的类型可以相同可以不相同。1.参数个数不同int add...原创 2018-10-07 16:15:32 · 146 阅读 · 0 评论 -
C++学习--友元
C++的结构体和类均有私有和公有属性,其实在C++中,结构体和类没有很大的差别。私有属性只能在类的内部使用,但C++有提供了一个友元函数,可以在外部访问类的私有属性。友元的关键词是friend,即使朋友的意思,就好像朋友能进出你的家一样。1.友元函数访问类或者结构体的属性类的私有属性只能在类的内部访问,通过public属性构建的函数可以访问类的private属性,但友元函数也可以访问类的私...原创 2018-10-21 13:45:45 · 232 阅读 · 0 评论 -
C++学习--整型大数加法
无论整型还是长整型,都有它的极限,但有时需要运算很大的数,超过整型的极限。那就需要用字符串保存加数,再进行运算。在C++学习的环境下,我把写的函数都封装在一个类中,提供一个函数接口供外部使用。我的思想是:找出两个数较长的,来确定结果字符串的长度,预留一位进位,所以结果字符串的长度会比两个加数的长度大1,最后判断是否去掉首位的字符0。#define _CRT_SECURE_NO_WAR...原创 2018-10-24 13:14:26 · 310 阅读 · 0 评论 -
C++学习--const对象
C++的const和C语言的差别非常大,在C++中const修饰的变量是真正意义上的常量,虽然能取地址,但不能修改;在C语言中,const是一个伪常量,修饰的变量可以通过指针修改。1.在C++中const还可以修饰类的成员函数,代表着常函数,不能修改类的成员数据。#include<iostream>class Person{private: int age;p...原创 2018-11-06 15:46:37 · 302 阅读 · 0 评论 -
C++学习--台阶问题
看到一道题,大意是这样的:一次可以走一级或者走两级台阶,问50级台阶有多少种走法。这种问题都是用到递归求解,找出前面几级走法的依赖关系,但注意的是用int保存结果会不会溢出,并且递归运行效率并不高,C++有个非常丑陋的语法叫模板元编程,通过牺牲编译时间提高递归运行效率。1.用递归求出结果:先分析前面几级台阶的走法:用num(1)代表1级的方法数,下同。//1级:1种方法 num...原创 2018-11-07 17:11:36 · 4840 阅读 · 0 评论 -
C++学习--类的静态函数和普通成员函数
C++提供static这个关键词对静态成员进行声明,静态成员函数和类的实例化无关,对于同一类来说,静态成员函数是共享的。而普通成员函数需要实例化才能调用,对于每一个实例来说,普通成员函数是自己独有的。#include<iostream>class Person{public: void ordinaryfunc();//声明一个普通成员函数 void sta...原创 2018-11-05 14:11:31 · 12263 阅读 · 0 评论 -
1.三大继承的区别
首先非常感谢CSDN这个平台,让我们有机会写下自己对编程的一些理解。这个专栏是我学习C++对类的继承的总结,C++的语法非常多,所以总结是个非常不错的选择。对于类的其他细节我就不多说。1.public继承public继承会把父类的public和protected属性完整地继承到子类,而private属性则无法继承。其实这也很好理解,毕竟你也无法完整继承你父亲的所有东西。public...原创 2018-11-15 20:12:11 · 170 阅读 · 0 评论 -
C++学习--8枚银币
现有八枚银币a b c d e f g h,已知其中一枚是假币,其重量不同于真币,但不知是较轻或较重,如何使用天平以最少的比较次数,决定出哪枚是假币,并得知假币比真币较轻或较重。分析:可以先取出a,b,c和d,e,f进行比较,如果两者的重量相等,即说明假币在g,h,再分别取出g,h和a(确认为真币)比较,和a不相等的是假币,如果两者重量不一样,即说明g,h是真币,然后取出c和f,比较sum(a...原创 2018-11-21 14:34:33 · 684 阅读 · 0 评论 -
2.父类指针与子类指针交错
子类继承父类的时候会默认生成一个父类,关系如下:也就是说子类的占用的内存大小是比父类要大的,如果父类和子类的指针相互交错指向会发生什么?1.子类指针指向父类实体:下面的代码简单创建了一个父类和一个子类,都拥有共同的函数print(),然后实例化一个父类指针,强转为子类指针,调用print()函数。#include<iostream>class Father...原创 2018-11-17 16:40:13 · 235 阅读 · 0 评论 -
4.虚函数
虚函数是父类提供给子类的一个函数接口,这不是实际存在的函数,在子类中可以重写该函数。声明虚函数的关键词是virtual,其实这是解决父类指针和子类指针交错的一种方法。如果用一个父类的指针想调用子类的方法是不行,因为父类的内存大小比子类的小,访问不了子类的方法。但虚函数就可以做到。我们先看下不是虚函数的情况:#include<iostream>class Father{p...原创 2018-11-28 15:46:40 · 141 阅读 · 0 评论 -
C++学习01
C++是在C的基础上发展来的,并且C++兼容C,是一门可以面向过程和对象的高级编程语言。C++也有头文件,而且头文件兼容.h的C头文件,C++中保留了指针,增加了类的概念。 1.C++的输入输出#include<iostream>//C++标准头文件#include<stdlib.h>using namespace std;//命名空间int main()...原创 2018-09-09 15:36:39 · 83 阅读 · 0 评论