1.虚函数的继承与派生;2.多文件静态对象的定义顺序,3模板注意,4mysql二、十六进制, 4颜色名称,5QSvgRenderer真实rect和viewboxrect转换
2016-07-19 14:42
711 查看
1.对于析构函数,一定要以virtual ~A();来标示所有的子类,父类的析构函数
2.对于静态初始化,由于对函数名命名有严格规定,也就是说若是A。cpp、b。cpp的静态函数,会依靠pro里的cpp的先后顺序来实现
2.2window下linux下对,声明的顺序有不同的标准,不可相同对待
2.3在A文件里定义静态对象a,B文件静态调用a时,会出现定义先后顺序导致的软件启动失败,尤其在linux、window下不同
2.3.2解决办法,可以在A文件定义对象时,定义指针(空) a,B文件静态调用a时,判断对指针赋值,及时析构就好
A.h
class QstandarditemmodelManager {
QstandarditemmodelManager();
~QstandarditemmodelManager();
QStandardItemModel* mCreator();
private:
QStandardItemModel *p;
};
A.cpp
QstandarditemmodelManager::QstandarditemmodelManager()
{
p = 0;
}
QstandarditemmodelManager::~QstandarditemmodelManager()
{
if(p) delete p;
}
QStandardItemModel* QstandarditemmodelManager::mCreator()
{
if(p == 0)
p = new QStandardItemModel;
return p;
}
3.模板类,函数的定义是不能在cpp里执行,只能在。h里面定义
4. SELECT hex(0x10221 & bin(1111)) -》10021
基本没用,&的话,2进制最明显
5.rgb(x,x,x), rgba(x,x,x,x), #xxxxxx, shv(x,x,x)【样式表能获取,QColor无法识别】
5.5QSvgRenderer真实rect和viewboxrect转换
#include
"mainwindow.h"
2.对于静态初始化,由于对函数名命名有严格规定,也就是说若是A。cpp、b。cpp的静态函数,会依靠pro里的cpp的先后顺序来实现
2.2window下linux下对,声明的顺序有不同的标准,不可相同对待
2.3在A文件里定义静态对象a,B文件静态调用a时,会出现定义先后顺序导致的软件启动失败,尤其在linux、window下不同
2.3.2解决办法,可以在A文件定义对象时,定义指针(空) a,B文件静态调用a时,判断对指针赋值,及时析构就好
A.h
class QstandarditemmodelManager {
QstandarditemmodelManager();
~QstandarditemmodelManager();
QStandardItemModel* mCreator();
private:
QStandardItemModel *p;
};
A.cpp
QstandarditemmodelManager::QstandarditemmodelManager()
{
p = 0;
}
QstandarditemmodelManager::~QstandarditemmodelManager()
{
if(p) delete p;
}
QStandardItemModel* QstandarditemmodelManager::mCreator()
{
if(p == 0)
p = new QStandardItemModel;
return p;
}
3.模板类,函数的定义是不能在cpp里执行,只能在。h里面定义
4. SELECT hex(0x10221 & bin(1111)) -》10021
基本没用,&的话,2进制最明显
5.rgb(x,x,x), rgba(x,x,x,x), #xxxxxx, shv(x,x,x)【样式表能获取,QColor无法识别】
5.5QSvgRenderer真实rect和viewboxrect转换
#include
"mainwindow.h"
#include <QApplication>
#include "form.h"
#include <QSvgRenderer>
#include <QtWidgets>
#include <QtDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QSvgRenderer render(QString(":/default.svg"));
QRectF rectp(0, 0, 400, 400);
QRectF rect2(100, 100, 200, 200);
QRectF rectd = QRect(QPoint(0,0), render.defaultSize());
QPixmap w(rectp.size().toSize());
QRectF rect1 = QRectF(-rect2.x()*rectd.width()/rect2.width(),
-rect2.y()*rectd.height()/rect2.height(),
(rectd.width()*rectp.width())/rect2.width(),
(rectd.height()*rectp.height())/rect2.height()
);
qDebug() << rect1;
render.setViewBox(rect1);
QPainter p(&w);
render.render(&p);
QLabel l;
l.setPixmap(w);
l.show();
return a.exec();
}
//default: 0,0,wd,hd: 0, 0, 400, 400
//x1, y1, w1, h1: -200,-200, 800,800
//QPainter: 0,0,wp,hp: 0,0,200,200
//x2, y2, w2, h2: 50, 50, 100, 100
//-x1*w2/wd= x2 x1 = -x2*wd/w2
//-y1*h2/hd= y2 y1 = -y2*hd/h2
//wd/w1*wp = w2 w1 = (wd*wp)/w2
//hd/h1*hp = h2 h1 = (hd*hp)/h2
相关文章推荐
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- Qt 5.6更新至RC版,最终版本近在咫尺
- Qt定时器和随机数详解
- Qt实现图片移动实例(图文教程)
- Qt for Android开发实例教程
- QModelIndex/Role/Model介紹<二>
- Qt Model/View/Delegate浅谈 - QAbstractListModel
- Qt Model/View/Delegate浅谈 - roleNames()
- QT历程(一):与CryptoJs对应的AES加密
- 基于PyQt5的快速开发框架QFramer
- OSX下安装PyQt
- ok6410开发板移植DirectFB手记
- 【笔记】给Qt内嵌一个Chrome吧
- 【算法】最短路径之A*搜索
- qt入门必备
- 在 Qt4 中使用 C++11
- Hello Word ~ v0.2.2 背单词软件发布 -- By WHYPRO
- ubuntu下opencv和qt的安装配置
- linux下opengl的安装(with qt)