直接代码: QPainter *painter; static const double Pi = 3.14159265358979323846264338327950288419717; static double TwoPi = 2.0 * Pi; QLineF line(sourcePoint,destPoint); if (qFuzzyCompare(line.length(), qreal(0.))) return; painter->setPen(QPen(Qt::black, 1,…
下面对于QT的绘制系统做一个简要说明, 这个系统主要由三部分组成,  QPainter, QPaintDevice, QPaintEngine. QPainter 是一个绘制接口类,提供绘制各种面向用户的命令,而QPaintDevice 是一个QPainter绘制的目的地,相当于画布,   而QPaintEngine 是基本绘制命令的具体实现. 我们打交道比较多的是 QPainter , 注意对于Windows平台来说,当绘制目标是一个widget的时候,QPainter只能在 paintEve…
在QGraphicsItem中,一个成员函数paint(),其声明如下: void QGraphicsItem::paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0 ) 在QGraphicsScene重绘绘制时,需要调用其中的每一个QGraphicsItem的paint()函数来逐个重新绘制组件.这个函数的参数 中,painter是绘图设备的painter,option…
1. 前言: 在C++中有两个非常容易混淆的概念,分别是函数重载(overload)和函数重写(overwirte).虽然只相差一个字,但是它们两者之间的差别还是非常巨大的. 而通过深入了解这两个概念的区别,会对C++的面向对象机制有一个更深入的理解. 2 函数重载(overload function) 2.1 函数重载的概念: 2.1.1 概念: 当函数具有相同的名称,但是参数列表不相同的情形(包括参数的个数不同或参数的类型不同),这样的同名而不同参数的函数之间,互相被称之为重载函数. 2.1…
QEvent的accept()和ignore()一般不会用到,因为不如直接调用QWidget类的事件处理函数直接,而且作用是一样的,见下面的例子. 推荐直接调用QWidget的事件处理函数.而不是调用accept()和ignore(). 只有一种情况下,必须使用调用accept()和ignore(),那就是closeEvent(),在closeEvent()的事件处理函数中,必须调用accept()和ignore().即如果想窗口被关闭,那么必须显示调用event->accept():如果不想关…
声明如下: TCustomPanel = class(TCustomControl) private FFullRepaint: Boolean; FParentBackgroundSet: Boolean; procedure CMCtl3DChanged(var Message: TMessage); message CM_CTL3DCHANGED; protected procedure CreateParams(var Params: TCreateParams); override;…
Qt窗口中的一些小技术总结 //Qt主窗口没有最小化,最大化按钮且最大化显示  int main(int argc, char *argv[]) { QApplication a(argc, argv); TestQtForWinCE w; w.setWindowFlags(w.windowFlags()& ~Qt::WindowMaximizeButtonHint& ~Qt::WindowMinimizeButtonHint); w.showMaximized(); return a.e…
派生类对象包含从基类继承类的数据成员,他们构成了“基类子对象”基类中的私有成员,不允许在派生类成员函数中被访问,也不允许派生类的对象访问他们:真正体现基类私有,对派生类也不开放其权限:基类中的公有成员: 若是public继承,则成为派生类的公有成员,既可以在派生类成员函数中访问,也可以被派生类的对象访问: 若是private继承方式,则只能供派生类成员函数访问,不能被派生类的对象访问: #include <iostream> using namespace std; class B { pub…
3.函数重写(override) 前提:必须有继承性 原因: 父类中的功能(函数),子类需要用,但是父类中函数的函数体内容和我现在要执行的逻辑还不相符 那么可以将函数名保留(功能还是此功能),但是将函数体重构: 注意: 子类重写父类的函数,除了函数体以外的部分,直接复制父类的即可 演示函数重写的使用以及格式: class Fu: def test(self): print('九阳神功...') class Zi(Fu): def test(self): print('九阳神功...') supe…
虚函数是C++中实现多态的一种方法,父类A的一个函数声明为虚函数,在子类B中覆盖定义之后,当在调用的时候使用A*a=new B(),此时调用对应的那个虚函数的名字,则会执行B中的函数.当父类中没有定义虚函数的实体时候,virtual void foo()=0:这个函数就是一个纯虚函数,对应的父类就是抽象类,则这个抽象类不能被实例化,只能由子类派生实例化. 每个含有虚函数的对象都有一个虚指针,这个虚指针和这个对象的基地址是一样的,即一个对象的第一块内存单元存储的一定这个类对象的虚指针. 普通继承中…
用于类的函数 issubclass(cls,class_or_tuple) 判断一个类是否继承自其他的类,如果此类cls是class或tuole中的一个派生(子类)则返回True,否则返回False 封装 enclosure 封装的目的是让使用者尽可能少的引用实例变量(属性)进行操作 私有属性:python类中,以双下划线‘__’开头,不以双下划线结尾的标识符为私有成员,在类的外部无法直接访问. class A: def __init__(self): self.__p1 = 100 #__p1…
//函数重载--函数重写--函数重定义 #include<iostream> using namespace std; /* 函数重载: 必须在一个类中进行(子类无法重载父类中的函数) 子类无法重载父类的函数,父类同名函数将被子类的同名函数覆盖 重载是在编译期间根据参数类型,顺序,个数决定的函数调用 函数重写 必须发生于父类和子类之间 并且父类和子类中的函数必须有完全相同的函数签名 使用virtual声明之后能够产生多态(如果不使用virtual,那叫重定义) 多态是在运行期间根据具体对象的类…
ParisGabriel                每天坚持手写  一天一篇  决定坚持几年 为了梦想为了信仰    开局一张图 Python人工智能从入门到精通 补充: 对象 -------------------------> 类实例变量(属性) 类变量实例方法 类方法( @classmethond) 静态方法( @staticmethond)(类内普通函数) 继承/派生 单继承: 一个子类只有一个父类 一个父类可以有多个子类 ------------------------------…
这个控件直接继承自TWinControl,因此不是改写Paint;函数,而是直接改写PaintWindow虚函数,它在VCL框架里被直接调用,直接就把自己画好了(不用走给控件Perform(WM_Paint)的路线了),很有意思. ------------------------------------------------------------------------------------------------ unit MyWinControl; interface uses Sys…
一.情景需求 调用后台接口需要附带token信息,那么在每个请求的头部添加token的做法就不太优雅了:一个网站请求100次,那就得写添加100次token,假设某天接口有所变动,改起来就十分麻烦了. 公司项目开发使用的框架是angularjs,正好angularjs有一个请求拦截的功能:意思就是,每次请求的发起,请求拦截都能感知,所以添加token的事我们就可以在请求拦截统一处理. 为了保证请求拦截添加token永远是有效的,我在这里除了添加token,也增加了现有token的过期判断,如果t…
一.窗口置顶 与 取消置顶 void MainWindow::on_windowTopButton_clicked() { if (m_flags == NULL) { m_flags = windowFlags(); setWindowFlags(m_flags | Qt::WindowStaysOnTopHint); this->show(); } else { m_flags = NULL; setWindowFlags(m_flags); this->show(); } } 二.全屏显…
目录 一.函数重载 二.函数重写 三.函数重定义 为了更加深刻的理解 函数重载.重写.重定义,我们可以带着如下这两个问题去思考: 1.子类中是否可以定义父类中的同名成员?为什么? 可以,因为子类与父类的命名空间不同: 2.子类中定义的函数是否可以重载父类中的同名函数? 不可以,因为函数重载必须在同一个作用域中. 一.函数重载(Function Overloading) 1.什么是函数重载 在同一个类中(同一个作用域中/在类的内部),存在一组函数名相同,函数的参数列表不同(参数的个数.类型.顺序)…
在QT中回调函数主要可以实现多态性,通过回调函数可以动态处理一些操作.在多线程中,当同时需要处理多个事务的时候,显然你会去创建多个线程类然后实例化,这显然会增加开发工作,当我们在线程类中加入一个回调函数,在run()函数调用这个回调函数,显然可以降低线程的耦合性,提高开发效率,在实例化这个线程时,传递实例化的回调函数到这线程中,这样就避免了线程类的重复创建.回调函数的实现主要有两种: 首先定义function的如下函数 #include <functional> std::function&l…
QStyledItemDelegate类为来自模型的数据项提供了显示和编辑工具. 当在Qt项视图(例如QTableView)中显示来自模型的数据时,各个项由委托(delegate)绘制.此外,当编辑一个项目时,它提供一个编辑器小部件,当编辑发生时,该小部件放在项目视图的顶部.QStyledItemDelegate是所有Qt项视图的默认委托,在创建时安装在它们上. QStyledItemDelegate类是模型/视图类之一,是Qt模型/视图框架的一部分.委托允许独立于模型和视图开发项目的显示和编辑…
Windows API BitBlt()函数实现带数字百分比进度条控件. 有两个例子:一用定时器实现,二用多线程实现. 带有详细注解. 此例是本人原创,绝对是网上稀缺资源(本源码用Windows API实现,网上的例子都是MFC实现),值得你拥有. 在Windows7 X64位平台上用DevCPP编译通过. 网址:https://download.csdn.net/download/ongp1347/13117503 Windows API静态文本(STATIC)控件实现的位图进度条. 有两个例…
CTRL+Enter发送信息的实现 在现在的即时聊天程序中,一般都设置有快捷键来实现一些常用的功能,类似QQ可以用CTRL+Enter来实现信息的发送. 在QT4中,所有的事件都继承与QEvent这个类,以下是用QEvent来实现快捷键的功能. 首先所有QT类的基类QObject有一个成员函数installEventFilter,这个函数是用来将一个事件处理器和该QObject绑定起来,所以就有了我下面的想法. 首先在chat类定义一个eventFilter,该函数是一个虚函数,可以由子类进行更…
跟C++的输出函数相比,NSlog函数有个很大的优势,就是它可以输出对象. 在实际使用过程中,我们可以通过实现description函数来实现对NSLog函数的重写 -(NSString*)description { NSString *ret=[NSStringstringWithFormat:@"name= %@,age=%@",self.name,self.age]; return ret; } 具体sample如下: #import <Foundation/Foundat…
转:http://www.cnblogs.com/hicjiajia/archive/2011/02/03/1948955.html Qt线程类 Qt 包含下面一些线程相关的类:QThread 提供了开始一个新线程的方法QThreadStorage 提供逐线程数据存储QMutex  提供相互排斥的锁,或互斥量QMutexLocker 是一个便利类,它可以自动对QMutex加锁与解锁QReadWriterLock 提供了一个可以同时读操作的锁QReadLocker与QWriteLocker 是便利…
一.QString转number QString number() QString number() QString number() QString number() QString number(qlonglong n, ) QString number(qulonglong n, ) QString number() 整形的转换格式都是一样的,第一个参数是十进制要转换的整数,第二个参数指定以什么进制来转换,默认是十进制,比如: QString strNumDec = QString::nu…
想仿命令行,所以定义了一个类,让一个String 对应一个 function,将两者输入list容器. 类中定义了 QString commandStr; void (MainWindow::*commandFun)(void);一个QString ,一个指向MainWindow类成员函数的指针.但是没想到在类中使用函数指针这么复杂. 一般情况,我们使用函数指针声明和引用都很简单明了.但是在类中就不一样了.最后的成功的形式如下: class command_type { public: comm…
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ImgList, ExtCtrls; type TForm2 = class(TForm) ImageList1: TImageList; Panel1: TPanel; procedure FormCreate(Sender: TObject); private { Priv…
1  .setContentsMargins 该函数用于设置窗口客户区中,四周空白边框的尺寸 , 类似于 word 中的 页边距设置 2.canonical Path 返回文件路径的规范路径 , 也就是不包含 .. 和 .  等相对引用符号的绝对路径…
1.判断QString是否为纯数字 2.查找自身最长重复子字符串 3.树形列表复选框操作 4.更改文件权限 5.判断系统64位 6.文件生成md5值 7.版本号比较(字符串比较) //-----实现----- 1.判断QString是否为纯数字 bool IsDigitString(QString strSource) { bool bDigit = false; if (strSource.isEmpty()) { return bDigit; } QByteArray strByteArra…
const与指针 摘自C++ Primer Plus (第五版) 中文版 const(常量): const变量的地址可以给指向const的指针,但不能指向常规类型的指针: const float a=112.3 const flaot *p1=&a //right const float a=112.3 flaot *p1=&a //wrong 禁止将非常量的数组的地址赋给非常量指针: const int a=[1,2,3,4,5] int sum(int arr[],int i) { r…
(1) /** * 继承时重写方法的返回类型可以不一样 * 这时的返回值类型必须是与父类相同或者为子类. */ class A { public Object func(){ return null; } } class B extends A { public String func() { return null; } } (2) /** * 重写的方法的访问权限要大于或等于原方法 */ class A { protected String func(){ return null; } }…