初学知识不深,现在给出我自己在写QMainWindow里的一些认知,主要是从代码上体现。
1、QWidget应该是QMainWindow的基类,但是QMainWindow应该是比较成熟的一个类,从它的名字上可以看出它是一个mainwindow,而widget只是一个控件,你想让它成为一个大界面估计也没问题,因为我也这样写过,但是QMainWindow应该是多了东西,看资料上说是多了工具栏这种,但实际敲下来如果我把一个widget设置为主界面好像也差不多。
ps:这里不是向上转型好像是对象树。
不管是QWidget还是QMainWindow都不可以直接当做对象去使用,(源码没看,也许可以),我们都要将自己自定义的类去继承这些,这里可以看到继承的是QMainWindow,但是构造函数里,是可以用QWidget去初始化QMainWindow类。
题外话:父类构造函数如果有参数,需要放在初始化列表里初始化。
2、QMainWindow不能直接初始化布局,如果当前是QWidget可以
QVBoxLayout *layout = new QVBoxLayout(this);
但是QMainWindow不一样,首先要把自己给一个QWidget,设置这个为中心布局,然后把这个中心布局给QVBoxLayout管理。