- 博客(63)
- 收藏
- 关注
转载 无法打开包含文件“stddef.h“ “concrt.h“
Qt Creator构建提示:无法打开包含文件“stddef.h“ “concrt.h“
2023-02-17 18:23:24
710
原创 静态代码检查工具 cppcheck
CppCheck是一个C/C++代码缺陷静态检查工具。不同于C/C++编译器及其它分析工具,CppCheck只检查编译器检查不出来的bug,不检查语法错误。所谓静态代码检查就是使用一个工具检查我们写的代码是否安全和健壮,是否有隐藏的问题。比如无意间写了这样的代码: int n = 10; char* buffer = new char[n]; buffer[n] =
2017-10-14 12:07:53
1959
转载 Qt之设置QWidget背景色
Qt中窗口背景的设置,下面介绍三种方法。 1.使用QPalette 2.使用Style Sheet 3.绘图事件一般我不用QSS设置窗口背景,也不建议使用。(这里是对于窗口而言,如果是子部件当然可以)。因为窗口使用QSS设置背景之后,若子部件不使用同样的方式来设置,默认则会继承父窗口的样式。使用QPalette使用QPalette来设置背景色m_pWidget = new QWidget(th
2017-10-10 08:52:40
1185
转载 QWidget子窗口中setStyleSheet无效,解决方法
发现 继承自QWidget的自定义类 ,使用setStyleSheet无效,如果删除头文件中的 Q_OBJECT,setStyleSheet生效,但不用OBJECT 就无法所使用signal and slot,最后找到解决办法,继承自QWidget的自定义类中,重载 paintEvent方法,并加入如下代码:QStyleOption opt;opt.init(this);QPainter p(t
2017-10-10 08:50:53
1674
原创 Qt检测内存泄露-VLD
概述Visual Leak Detector(VLD)是一款用于Visual C++的免费的内存泄露检测工具。他的特点有:可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号; 可以得到泄露内存的完整数据; 可以设置内存泄露报告的级别;并且是开源免费的。美中不足的是只能使用VC++编译器,关于linux的内存泄露,可以使用valgrind工具进行检测。下载地址:http://vld
2017-09-28 23:15:56
1162
转载 C++11 - 字串字面值
标准C++提供了两种字符串字面值。第一种,包含有双引号,产生以空字符结尾的const char数组。第二种有着前标L,产生以空字符结尾的const wchar_t数组,其中wchar_t代表宽字符。对于Unicode编码的支持尚付阙如。为了加强C++编译器对Unicode的支持,类别char的定义被修改为其大小至少能够存储UTF-8的8位编码,并且能够容纳编译器的基本字符集的任何成员。C++11 将
2017-09-28 08:34:07
821
原创 智能指针
使用智能指针的缘由考虑下边的简单代码: int main() { int *ptr = new int(0); return 0;}就如上边程序,我们有可能一不小心就忘了释放掉已不再使用的内存,从而导致资源泄漏(resoure leak,在这里也就是内存泄漏)。考虑另一简单代码: int main() { int *ptr = new int(0
2017-09-27 09:18:29
328
转载 QTransform变换
转自http://blog.youkuaiyun.com/liang19890820/article/details/51212890 简述QTransform 用于指定坐标系的 2D 转换 - 平移、缩放、扭曲(剪切)、旋转或投影坐标系。绘制图形时,通常会使用。QTransform 与 QMatrix 不同之处在于,它是一个真正的 3x3 矩阵,允许视角转换,QTransform 的 toAffine()
2017-09-23 09:05:20
9012
2
原创 QPainter绘制文本 二
先从最简单任务开始:在 widget 的左上角(0, 0)处绘制字符串 jEh。void MainWidget::paintEvent(QPaintEvent *) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.setFont(QFont("Times", 15
2017-09-23 08:42:25
10614
3
转载 Qpainter绘制文本
文本的绘制有两种方式:在指定位置绘制文本,不会自动换行 void QPainter::drawText(int x, int y, const QString &text) void QPainter::drawText(const QPoint &position, const QString &text)在指定的矩形内绘制文本,设置 flags 能够实现自动换行,对齐等 v
2017-09-23 08:14:44
15888
1
转载 QPainter 的状态保存与恢复
实现这样的一个程序,把 QPainter 的坐标原点从左上角移动到 (100, 100),然后画出坐标轴,接下来顺时针旋转坐标轴 45 度,设置画笔,画刷,字体,画一个矩形和字符串,最后恢复 QPainter 到最开始的状态,即还原画笔,画刷,字体,逆时针旋转坐标轴 45 度,移动 QPainter 的坐标原点到左上角,再画一个矩形和字符串,就像下图这样: 再不了解 QPainter 的 sa
2017-09-22 08:57:36
11305
转载 渐变
转自http://www.qtdebug.com/qtbook-paint-gradient/ 渐变有三种:QLinearGradient, QConicalGradient and QRadialGradient
2017-09-20 22:37:43
325
原创 const static const static成员变量的初始化
class Test { public: Test():a(0){} enum {size1=100,size2=200}; private: const int a;//只能在构造函数初始化列表中初始化 static int b;//在类的实现文件中定义并初始化 const static int c=1;//类中初始化
2017-07-13 23:02:55
507
原创 const
C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助。Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。一、Const作用如下表所示: No 作用说明 参考代码 1 可以定义const常量 const int Max
2017-07-13 22:54:52
290
原创 static
面向过程:静态局部变量 静态局部变量有以下特点: 该变量在全局数据区分配内存; 静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化; 静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0; 它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束;
2017-07-13 22:25:37
290
原创 重载 重写(覆盖) 隐藏
基本概念:重载在一个类中被声明的几个具有不同参数列(参数的类型,个数,顺序不同)的同名函数,根据参数列表确 定调用哪个函数,重载不关心函数返回类型。重写(覆盖):其函数名,参数列表,返回值类型,所有都必须同基类中被重写的函数一致。只有函数体不同(返回值不同的协变返回类型也可以构成重载)。两个方法分别位于派生类与基类基类函数必须有 virtual 关键字,不能有 static ;子类方法有无
2017-07-12 22:54:48
348
原创 浅谈C++多态性
C++多态性是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖(override),或者称为重写。(这里我觉得要补充,重写的话可以有两种,直接重写成员函数和重写虚函数,只有重写了虚函数的才能算作是体现了C++多态性)而重载则是允许有多个同名的函数,而这些函数的参数列表不同,允许参数个数不同,参数类型不同,或者两者都不同。编译器会根据这些函数的不同列表,将同名的函数
2017-07-12 08:42:44
408
转载 C++多态性
假设我们有三个类Person、Teacher、Student它们之间的关系:Teacher、Student继承Person。 Demo1#ifndef __OBJEDT_H__#define __OBJEDT_H__#include <string>#include <iostream>class Person{public: Person(const string& name,
2017-07-12 08:11:57
315
转载 C++的三种访问权限与三种继承方式
三种访问权限我们知道C++中的类,有三种访问权限(也称作访问控制),它们分别是 public:在本类中,类外,继承都可以使用 protected:在本类和继承中使用,类外不可用 private:只能在本类中使用,类外,继承不可用 要理解它们其实也很容易,看下面了一个例子。 父类:class Person{public: Person(const string& name, in
2017-07-12 00:08:41
582
转载 Qt中ui文件的使用
直接使用#include "ui_hellodialog.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); QDialog w; Ui::HelloDialog ui;//创建ui ui.setupUi(&w);//加载ui w.show();//显示
2017-05-16 00:22:02
1444
原创 堆内存分配与释放
int *pi= new int(0);//分配内存,并初始化 当不使用pi时,要手动释放内存。 delete pi; 注意:pi指向的内存空间释放了,但是pi本身并没有撤销,该指针所占空间并未释放,该指针还是指向原来的地方。
2017-04-22 20:45:15
687
原创 C++内存模型
C语言中的内存机制在C语言中,内存主要分为如下5个存储区: (1)栈(Stack):位于函数内的局部变量(包括函数实参),由编译器负责分配释放,函数结束,栈变量失效。(先进后出) (2)堆(Heap):由程序员用malloc/calloc/realloc分配,free释放。如果程序员忘记free了,则会造成内存泄露,程序结束时该片内存会由OS回收,但程序只要不结束,就有可能造成内存泄露。注意它与
2017-04-22 19:10:31
1173
转载 new 和 delete 背后机制
定义一个类 A:class A{public: A(int v) : var(v) { fopen_s(&file, "test", "r"); } ~A() { fclose(file); }private: int var; FILE *file;};很简单,类 A 中有两个私有成员,有一个构造
2017-04-22 15:00:48
372
原创 State与Transition之Transition
Transition 过渡使用Transition使State状态变化时,消除状态变化产生的突变。 所有Item都有个transitions属性,它保存着所有的过渡,它是一个列表类型。Propertiesanimations : list< Animation >//动画列表,过渡使用的动画enabled : bool //是否使能过渡from : string //指定触发过渡的状态名,默
2017-04-09 14:41:26
1922
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人