- 博客(49)
- 资源 (11)
- 问答 (2)
- 收藏
- 关注
原创 VS2015调用动态链接库文件
1.VS安装Qt插件操作步骤:工具 -> 扩展和更新 -> 联机 -> 搜索Qt -> 下载Qt Visual Studio Tools(QtPackage可装可不装) -> 安装 -> 立即重新启动重新启动完成,会发现VS工具栏多了一个选项“Qt VS Tools”2.新建工程新建一个工程,也可以使用QtCreator新建一个工程,然后选择Open...
2019-06-27 19:38:49
1461
2
原创 Qt Creator调用动态链接库文件
1. 新建工程新建一个Qt工程。和新建DLL工程差不多,我们这里选择Application,Qt Console Application,这个代表控制台程序,最终结果就是弹出一个黑窗口,因为我们这里不需要界面,如果需要界面的话,可以选择Qt Widgets Application。操作步骤:文件 -> 新建文件或项目 -> Application-> Qt Console A...
2019-06-19 11:54:31
15722
7
原创 Qt Creator生成动态链接库文件
1. 新建工程第一步选择新建一个C++库的工程。操作步骤:文件 -> 新建文件或项目 -> Library -> C++库 -> choose第二步选择共享库(即动态链接库),输入工程名(即最终生成DLL名)。操作步骤:选择共享库 -> 输入工程名(即最终DLL名) -> 选择工程路径 -> 下一步第三步选择编译平台,一般来讲,wind...
2019-04-13 12:25:07
2694
1
原创 函数参数是指针 OR 引用?该不该加const?
先来说说指针与引用的区别:1.指针可以在任何时候被初始化,引用在创建时必须初始化。2.一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。3.不存在空引用。引用必须连接到一块合法的内存。4.无论传值还是传指针,函数都会生成一个临时变量,但传引用时,不会生成临时变量。引用并不产生对象的副本,也就是参数传递时,对象无须复制。5.引用在定义时不...
2019-03-27 11:21:11
976
原创 C++基础之基本的输入输出
C++基础之基本的输入输出C++ 标准库提供了一组丰富的输入/输出功能,我们将在后续的章节进行介绍。本章将讨论 C++ 编程中最基本和最常见的 I/O 操作。C++ 的 I/O 发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。I/O 库头文件下列...
2019-02-20 09:44:46
469
原创 C++基础之数组
C++基础之数组数组(Arrays) 是在内存中连续存储的一组同种数据类型的元素(变量),每一数组有一个唯一名称,通过在名称后面加索引(index)的方式可以引用它的每一个元素。也就是说,例如我们有5个整型数值需要存储,但我们不需要定义5个不同的变量名称,而是用一个数组(array)来存储这5个不同的数值。注意数组中的元素必须是同一数据类型的,在这个例子中为整型(int)。例如一个存储5个整...
2018-12-25 22:16:16
1062
原创 C++基础之函数
函数是把一个语句序列(函数体)关联到名称和零或更多函数参数列表的 C++ 实体。// 函数名:“ isodd ”// 参数列表拥有一个参数,有名称“ n ”和类型 int// 返回类型是 boolbool isodd(int n){ // 函数体的开始 return n % 2;} // 函数体...
2018-11-04 19:27:40
3127
原创 C++基础之string类型
C++基础之string类型string 类型支持长度可变的字符串,C++ 标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作。标准库 string 类型的目的就是满足对字符串的一般应用。与其他的标准库类型一样,用户程序要使用 string 类型对象,必须包含相关头文件。如果提供了合适的 using 声明,那么编写出来的程序将会变得简短些:#include <string&...
2018-09-25 17:41:54
41818
1
原创 C++基础之using声明
C++基础之using声明之前看到的程序,都是通过直接说明名字来自 std 命名空间,来引用标准库中的名字。例如,需要从标准输入读取数据时,就用 std::cin。这些名字都用了:: 操作符,该操作符是作用域操作符。它的含义是右操作数的名字可以在左操作数的作用域中找到。因此,std::cin 的意思是说所需要名字 cin 是在命名空间 std 中定义的。显然,通过这种符号引用标准库名字的方...
2018-09-17 14:35:16
1569
原创 C++基础之头文件
C++基础之头文件类C++中我们通过定义类来定义自己的数据结构。类机制是C++中最重要的特征之一。事实上,C++设计的主要焦点就是使所定义的类类型的行为可以像内置类型一样自然。我们看到的像 istream 和 ostream 这样的库类型,都是定义为类的,也就是说,它们严格说来不是语言的一部分。 使用类时我们需要回答三个问题:类的名字是什么?它在哪里定义?它支持什么操作...
2018-09-10 20:36:53
2065
原创 C++基础之枚举
C++基础之枚举前言 我们经常需要为某些属性定义一组可选择的值。例如,文件打开的状态可能会有三种:输入、输出和追加。记录这些状态值的一种方法是使每种状态都与一个唯一的常数值相关联。我们可能会这样编写代码:const int input = 0;const int output = 1;const int append = 2;虽然这种方法也能奏效,但是它有个明显的缺点:...
2018-09-03 19:53:03
306
原创 让你的QtCreator编译的更快
让你的QtCreator编译的更快相比于VS,很多人在Qt下编译代码会发现所选择的Qt的编译器编译太慢,这里教大家几个方法,可以有效提升编译速度: (一)项目添加参数-j 4(4是cpu的核数) 使所有的cpu核心都能被充分利用。(二)使用并行编译 在 .pro里加入下面一行QMAKE_CXXFLAGS += /MP指定/mp编译选项,编译器将使用并行编译,同时起多个编译进程...
2018-08-31 11:33:46
2326
原创 C++基础之引用与typedef
C++基础之引用与typedef引用 1. 初识引用 引用就是对象的另一个名字。在实际程序中,引用主要用作函数的形式参数。我们将在后面再详细介绍引用参数。 引用是一种复合类型,通过在变量名前添加“&”符号来定义。复合类型是指用其他类型定义的类型。在引用的情况下,每一种引用类型都“关联到”某一其他类型。不能定义引用类型的引用,但可以定义任何其他类型的引用。 引用必须用与该引用...
2018-08-27 19:58:07
1832
2
原创 VS调试不进入断点解决方法
VS调试不进入断点解决方法1. 确保进入调试状态 代码中指定程序是需要管理员身份运行,实际调试时VS未使用管理员身份,会导致点击调试实际未进入调试状态。 VS下设置调试使用管理员权限方法:打开程序集的属性窗口,找到“安全性”设置,其中有一个“启用 ClickOnce 安全性设置”,勾选后再反勾选该复选框。 此时在解决方案资源管理器中,就可以找到 app.manifest ...
2018-08-24 10:18:51
36128
1
原创 C++基础之const基础用法
C++基础之const基础用法前世 下列 for 循环语句有两个问题,两个都和使用 512 作为循环上界有关。for (int index = 0; index != 512; ++index) { // ...}第一个问题是程序的可读性。比较 index 与 512 有什么意思呢?循环在做什么呢?也就是说 512 作用何在? 第二个问题是程序的可维护性。假设这个...
2018-08-20 21:55:07
196
原创 C++基础之基本类型
C++基础之基本类型1.1整型 表示整数、字符和布尔值的算术类型合称为整型。 字符类型有两种:char 和 wchar_t。char 类型保证了有足够的空间,能够存储机器基本字符集中任何字符相应的数值,因此,char 类型通常是单个机器字节(byte)。wchar_t 类型用于扩展字符集,比如汉字和日语,这些字符集中的一些字符不能用单个 char 表示。 short、int 和 long...
2018-08-13 19:43:58
562
原创 QT中设置当鼠标在窗口外点击时关闭窗口
我们想要对某一个窗口进行这样的设置: 当鼠标在此窗口区域外点击时,将此窗口关闭。 一般来讲,有以下几种方式: 1.重写鼠标点击事件,判断当前鼠标坐标,当不在窗口坐标区域内时,将窗口关闭。 2.重写失去焦点事件,当窗口失去焦点时,将窗口关闭。 3.也是最简单的方法,直接判断此窗口是不是当前活跃窗口,如果不是,将...
2018-07-09 15:26:00
6094
原创 C++实现日志库
C++实现一个日志库,满足以下要求: 1. 日志信息分级:FATAL(致命错误)、ERROR(一般错误)、WARN(警告)、INFO(一般信息)、DEBUG(调试信息) 2. 记录日志信息支持记录到文件、控制台、数据库(要求能支持多种数据库,比如 MSSQL MySQL SQLite等) 3. 要求能够方便配置该功能:比如 开关日志,仅记录某级别以上的日志,日志记录到哪里的功能。 4...
2018-05-11 14:21:12
6248
1
原创 使用QT开发串口调试助手
使用Qt开发一个串口调试助手。最终实现效果: 通过设置对应参数,连接串口,进行串口通信,然后就可以收发命令啦! 话不多说,看代码:头文件:#ifndef SERIALWIDGET_H#define SERIALWIDGET_H#include &lt;QWidget&gt;#include &lt;QTextBrowser&gt;#include &lt;QPushB...
2018-05-10 17:20:32
12241
4
原创 自己实现栈,通过此栈实现一个计算器
题目:实现一个计算器,既能进行加减乘除的基本运算,又能支持带括号(只需要支持小括号即可)的优先级计算。 要求:使用面向对象思想,使用栈的数据结构实现括号匹配,栈的存储结构要求使用链表结构而非线性结构。 例如: 输入: 3 * (2 * 4 – 20 /5)+ 7 结果: 19首先使用链表实现栈,为了方便编程,设计的栈的结构是这样的: 代码如下:#include <...
2018-04-08 19:59:22
3068
1
原创 QT读写改XML格式文件
最近因业务需要,需要更改XML文件中某一结点的值,于是搜索相关资料,但是网上搜出来资料的没有详细解释,好不容易才搞明白,因此,特写一篇明白易懂的文章,以供各位少走弯路。本人采用的是QDom方式读写XML,然后用QTreeWidget显示。最终达到的目的是: 首先,通过代码创建一个XML文件,例如: 然后更改其中的Text节点的内容,就像这样: 最后再用程序读出来: 话不...
2018-02-09 10:06:54
13744
1
原创 编写代码将字符串反向排列输出
题目要求: 编写函数reverse_string(),它的原型如下: void reverse_string(char *string); 函数把参数字符串中的字符反向排列。请使用指针而不是数组下标,不要使用任何C函数库中用于操纵字符串的函数。 提示:不需要声明一个局部数组来临时存储参数字符串。忽略题目要求的话,此处应该有多种解决方案 1.先求出字符串长度(两种方法,使用库函数str
2018-02-05 09:19:42
4197
原创 编写一个函数,删除一个字符串的一部分
题目要求: 请编写一个函数,删除一个字符串的一部分。函数的原型如下: int del_substr(char *str, char const *substr); 函数首先应该判断substr是否出现在str中,如果它并未出现,函数就返回0;如果出现,函数应该把str中位于该子串后面的所有字符复制到该子串的位置,从而删除这个子串,然后函数返回1。如果substr多次出现在str中,函
2018-02-02 17:36:52
5538
1
原创 编写代码实现strpbrk()函数。
自己动手编写代码实现strpbrk()函数。strpbrk()函数是干什么的呢? strpbrk()函数解释如下: strpbrk是在源字符串(s1)中找出最先含有搜索字符串(s2)中任一字符的位置并返回,若找不到则返回空指针。 返回s1中第一个满足条件的字符的指针,如果没有匹配字符则返回空指针NULL。题目要求: 请编写一个函数,它在一个字符串中进行搜索,查找所有在一个给定字符集合中
2018-02-02 10:24:05
720
原创 使用视频当背景2.0
上次说了《使用视频当背景1.0》,有的人必须使用视频当背景,但是上次的代码风险又颇多,那到底有没有办法解决呢?其实是有的,比较麻烦而已,话不多说,上代码:最终画面代码 loginwidget.h#ifndef LOGINWIDGET_H#define LOGINWIDGET_H#include #include #include #include "inforwindow.h
2018-01-26 11:49:09
755
原创 使用视频当背景1.0
业务需求,需要做一个登录界面,背景必须是视频,为什么不能是动态图呢?因为动态图有诸多缺点:例如需要同样清晰度,分辨率,动态图会特别大。 话不多说,直接上代码,底层用的videowidget播放视频,在上面叠加透明窗口。主窗口页面代码,最终呈现的窗口: widget.h#ifndef WIDGET_H#define WIDGET_H#include #include #in
2018-01-26 11:32:15
845
原创 使用动态图当背景图片,上边放置各种控件
我们一直使用QT制作应用,一般都用图片,或者纯色当做背景,那如何使用动态图当背景呢?话不多说,直接上代码:主窗口最终呈现的画面 loginwidget.h#ifndef LOGINWIDGET_H#define LOGINWIDGET_H#include #include #include #include "inforwindow.h"class LoginWid
2018-01-26 11:08:07
4652
2
原创 如何将QLineEdit密码显示样式更改
如何将QLineEdit密码显示样式更改,例如,将默认圆点改为方框查询QSS官方文档可知:利用lineedit-password-character:可以设置密码显示样式,9679代表QLineEdit默认样式,这个数字其实就是Unicode表中实心圆点的HTML代码进入Unicode字符百科网站:搜索9679会看到圆点图形,点击可以看到,HTML代码是
2018-01-26 10:47:17
3428
2
原创 QT实现控件倒影特效 2.0
QT实现控件倒影特效 2.0之前写过一篇文章关于QT如何实现倒影特效的,现在完善了一下,将程序写成接口,方便调用,同时使倒影特效更加逼真想要参考控件特效1.0的,传送门在这里:http://blog.csdn.net/fan_xingwang/article/details/78982571 话不多说,直接上代码reflect文件(包括.cpp和.h文件)就是写好的接口,直接调用R
2018-01-11 15:02:42
970
原创 QT如何实现控件倒影特效
QT如何实现控件倒影特效在工作中,我们有时会有以下需求:想要为某些控件不只是图片加倒影特效,例如: 这样: 例如: 这样: 于是,在我的潜心研究之下,终于找到了两种实现方法: (一)使用QT的QGraphicsEffect类 QGraphicsEffect类是一个强大的特效类,但是官方只有四种用法,做倒影是不够的,因此,需要我们自己重新定义一个类来继承它,重写它的dra
2018-01-05 16:14:39
2478
2
原创 Android Studio调用QT for Android生成的.so库
本文介绍如何实现Android 与 QT 的结合,使Android能够调用QT的代码,避免重复造轮子最近在做AndroidStudio调用QT写的so库,在网上搜集资料,大多数都不全,而且很少有AndroidStudio版本,于是将自己这几日的心得做以研究整理: 首先,Android调用的库是.so库,所以QT必须安装QT for Android,否则无法生成对应的.so库,不要想着用li
2017-11-07 16:52:36
6684
8
原创 兔子繁衍问题
今天做了阿里编程测验,有一道兔子繁衍问题。 题目要求: 1. 猎人把一对兔子婴儿(一公一母称为一对)放到一个荒岛上,两年之后,它们生下一对小兔,之后开始每年都会生下一对小兔。生下的小兔又会以同样的方式继续繁殖。 2. 兔子的寿命都是x(x>=3)年,并且生命的最后一年不繁殖。 3. 如果岛上的兔子多于10对,那么猎人会每年在兔子们完成繁殖或者仙逝之后,从岛上带走两对最老的兔子。 请问y年
2017-08-15 15:58:41
3100
原创 编写一个通信录
题目要求: 编写一个关于通讯录的程序 1. 可输入姓名、电话(可多个)、通讯地址、Email等必要的信息; 2. 可根据姓名查询电话等信息(最好还能根据电话查询姓名),并显示在屏幕上; 3. 要求通讯录保存成文件,如张三.txt,用文件流的方式实现; 4. 最好用面向对象方法编写。开发环境: QT Creator 但是建立的是纯C++工程//person.h
2017-08-10 13:31:22
1903
原创 运用多线程知识写一个火车站售票系统
题目简介: 在现实世界中有一种数据模型,模拟生产者与消费者模型。如火车票售票系统,将票据的数量录入服务器我们称之为“生产”了若干车票。各地终端会共享这些车票信息去售票。直到车票售票完,则提示无票可卖。 本练习题,在同一台电脑上使用不同的进程(独立运行的应用程序)模拟火车票售票系统。将录入存放火车票的独立运行程序我们称之为服务端。一台电脑只能运行一个实例。其他负责售卖火车票的程序称为客户端。客户
2017-08-10 11:51:55
1768
原创 使用面向对象思想建立一个学生管理系统
题目要求: 学校招生办在录取当年新生时已经为每个新生建立一个新生的资料库,其中包含每位新生的基本资料:学号(long)、姓名(char [20])、性别(enum)、年龄(int )、住址(char[30])、主修专业(char[30])。 新生主修专业所属系又在学生基本资料的基础上为每位该系新生建立一个主修课程表,设有新生主修课程名称(char[60,30])和成绩(float[60])
2017-08-10 11:34:37
2765
2
原创 常用设计模式之抽象工厂模式
抽象工厂模式: 抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。 应用场景: 当每个抽象产品都有多于一个的具体子类的时候,工厂角色怎么知道实例化哪一个子类呢?比如每个抽象产品角色都有两个具体产品。抽象工厂模式提供两个具体工厂角色,分别对应于这两个具体产品角色,每一个具体工厂角色只负责
2017-07-11 17:57:00
214
原创 常用设计模式之简单工厂模式
简单工厂模式: 简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。 应用场景: 简单工厂模式解决的问题是如何去实例化一个合适的对象。 简单工厂模式的核心思想就是:有
2017-07-10 17:52:34
302
原创 常用设计模式之单例模式
单例模式:用来创建独一无二的,只能够有一个实例的对象。 单例模式的应用场景:有一些对象其实只需要一个,比如:线程池,缓存,对话框,处理偏好设置和注册表的对象,日志对象,充当打印机,显卡等设备的驱动程序对象。这些对象只能够拥有一个实例,如果创建出了多个实例,就会导致一些程序的问题。程序的行为异常,资源使用的过量,或者导致不一致的结果。常用来管理共享的资源,比如数据库的连接或者线程池。Singleto
2017-06-21 21:12:36
266
原创 实现一个简单计算器,表达式为字符串表示
实现一个简单计算器,表达式为字符串表示要求:实现一个简单计算器,表达式是字符串,如“#(2*(1+3)+8)/4#”,以‘#’做标志位 如: 输入#(2*(1+3)+8)/4#输出 4实现思路:用栈实现。将输入的中缀表达式通过栈的方式改为后缀表达式计算。如 (2*(1+3)+8)/4 可先将“(”压入栈1,“2”压入栈2,“*”继续压入栈1,“(”
2017-06-19 20:14:22
6388
转载 回调函数
C/C++之回调函数 今天讨论下C/C++中的回调函数。 在理解“回调函数”之前,首先讨论下函数指针的概念。函数指针(1)概念:指针是一个变量,是用来指向内存地址的。一个程序运行时,所有和运行相关的物件都是需要加载到内存中,这就决定了程序运行时的任何物件都可以用指针来指向它。函数是存放在内存代码区域内的,它们同样有地址,因此同样可以用指针来
2017-06-18 18:02:38
242
QT读写改XML格式文件
2018-02-09
QtC++实现控件倒影特效的两种方法(按钮为例)
2018-01-05
【求助】有没有大佬做过AndroidStudio通过JNI NDK调用第三方so库?
2017-11-05
请教QT怎么将一个任意类序列化成XML
2017-09-27
TA创建的收藏夹 TA关注的收藏夹
TA关注的人