代码仓库以及参考文件见文章底部
坐标体系
要想学好GUI,界面的坐标系首先要搞清楚
在Qt编程中,以左上角为原点,X向右增加,Y向下增加。
对于所有嵌套的窗口,其坐标是相对于父窗口来说的。
QWidget
所有窗口以及窗口控件都是从QWidget直接或者间接派生出来的。
对象模型
在Qt创建对象的时候,会提供一个Parent对象的指针,那么这个Parent指针是干什么用的?下面让我们来一探究竟。
- QObject是按照树型形式组织起来的
当你创建一个QObject对象时,就会看到QObject的构造函数接收一个QObject指针作为参数,这个参数就是parent,也就i事父对象的指针。这相当于在常见QObject对象时,可以提供一个父对象,在创建这个子对象时就会自动添加到其父对象的children列表中。如果想了解具体原理可以查看下go语言的context对象的实现,与此类似,不过相对来说更加简单易懂。
当父对象析枸的时候,这个列表中所有的对象也会被析枸(这里的父对象并不是C++意义上的父类),这种设计子安GUI中非常常见,比如一个界面上面有很多组件,当我们要关闭该界面时,该界面关联的子项也要同时清除。 - QWidget是能够在屏幕上显示的一切组件的父类
QWidget继承自QObject,因此也继承了这种对象树关系&#