this指的是真正的当前正在显示的窗口
main函数:
Widget w是生成了一个主窗口,QT Designer是在这个主窗口里塞组件
w.show()用来展示这个主窗口
头文件:
namespace Ui{class Widget;}中的class Widget和下面的class Widget不是一个东西
Ui::class Widget记录的是在Qt Designer中的控件的位置大小布局等等信息
class Widget具体实现功能的
这里的两个宏QT_BEGIN_NAMESPACE和QT_END_NAMESPACE估计就是给这个class Widget赋予其成员信息的,当然名字是可以修改的
源文件:
ui(new UI::Widget)就是给ui传了一个父亲窗口(UI::Widget是设计图,Widget才是具体窗口),其他子窗口都是在父亲窗口下的
在实际开发中可能遇到的问题:
解决方法:
要加上这样一句话
此处的verticalLayout指的是你最大的那个布局(包含所有控件的布局,一般是垂直布局的),这样写的作用就是让这个verticalLayout这个大布局随着窗口大小的改变而改变,因为布局是会自动匹配当前窗口大小的。如果不加那这个布局的大小就不会变,这个大布局变了,其他小布局也会变。但关键是这个大布局得变!(这个大布局包含了所有的小布局)
要理解这个首先得明白Qt Designer中的Widget和你实际窗口的Widget不是一回事,Qt Designer中的Widget只是设计图纸。或许verticalLayout可以跟着你Qt Designer中的Widget中的大小变化而变化,但是你Qt Designer中的Widget大小是不会变的,因为它只是图纸,变的是实际窗口的Widget大小,所以才要加上这一句话,让布局跟着实际窗口变化而变化。都是这样子做Qt Designer中的Widget大小任然不变,变的是verticalLayout这个布局的大小(包含了里面的所有控件的大小和位置信息也变)。
(比较难以理解哈,自己看多几次)
this指向的就是当前实实在在在显示的窗口,这个this是会循环的,在之前讲过,只要你的窗口发生变动就会变化