1.虚函数的继承与派生;2.多文件静态对象的定义顺序,3模板注意,4mysql二、十六进制, 4颜色名称,5QSvgRenderer真实rect和viewboxrect转换

来源:互联网 发布:java面向对象特征 编辑:程序博客网 时间:2024/05/02 01:59

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"

#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

0 0