QT问题中关于parent的一个问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT问题中关于parent的一个问题相关的知识,希望对你有一定的参考价值。
比如说我在头文件里定义了一个类
class PaintWidget:public QWidget
public:
PaintWidget(QWidget*parent=0)
然后在cpp中写
PaintWidget::PaintWidget(QWidget*parent):QWidget(parent)
请问 前面的*parent=0 和cpp中的(QWidget*parent):QWidget(parent)是什么意思
如何重定义呢?看parent参数。
当PaintWidget放到某个窗口上的时候,该PaintWidget的父对象就被重定义为该窗口。
但是,由于PaintWidget本身继承于QWidget,那么还需要对QWidget的父对象重定义。PaintWidget通过parent指针来告诉父类QWidget:“我的父对象是该窗口,请把你的父对象也置为那个窗口”。
就是这样。。。
请注意区分父类和父对象的区别。 参考技术A 1.parent=0这句是默认参数列表,就是参数默认值的意思,只要在声明时加上即可。
2.PaintWidget::PaintWidget(QWidget*parent):QWidget(parent)
冒号之前的是使用类作用域限定符引用的函数声明原型,冒号之后的是初始化列表。QWidget(parent) 使用parent指针初始化父类实例的意思。因为派生类的初始化过程中第一步就是调用父类的构造函数初始化父类结构,QWidget(parent) 显示调用了QWidget的一个构造函数。
Qt QPainter中关于坐标的注意事项
一、QPainter需要注意的是有一个物理坐标,视口坐标,虚拟坐标。如果在都不设定的情况下,三者是一致的,大小一样。其中物理坐标为硬件设备所有,无法进行设置,setViewport(int x, int y, int w, int h)可以设置视口坐标,(x,y)表示视口坐标的起始坐标点,w、h表示视口坐标窗口的宽和高。setWindow可以设置虚拟坐标的其实坐标点和窗口大小,该函数的解释详见第三大点第一小点。
二、注意三个坐标系的关系,视口坐标系
三、setWindow和translate函数:
a.QPainter类中的setWindow(int x, int y,int w, int h)函数是用来设置当前物理窗口映射后的虚拟窗口大小,最后的绘制会在该虚拟窗口的大小上进行。参数x、y表示虚拟窗口起始点的坐标,w、h表示映射后虚拟窗口的大小。
b.translate(int x, int y)函数表示将setWindow函数设置的虚拟窗口的坐标原点(及(0,0)坐标点)移动到参数(x,y)表示的坐标;
c.这两个函数无论调用顺序如何,translate函数都是在setWindow函数设置的虚拟窗口坐标上进行原点的移动。
以上是关于QT问题中关于parent的一个问题的主要内容,如果未能解决你的问题,请参考以下文章