QMainWindow并没有setLayout()函数,因此不能使用setLayout()函数来设置layout,需要使用间接的方法。
需要做的只是先定义一个QWidget对象,然后使用QMainWindow::setCentralWidget()函数来将该QWidget对象设置为Central Widget,然后使用该QWidget对象的setLayout()函数,就可以了,不过后续对象都要被添加到该QWidget对象下的layout中。
QMainWindow为什么会有这样奇怪的特性呢,原因是这样的:QMainWindow类实际上有一个默认的layout,示意如下:

(来自Qt Assistant),所以就不能重新设置layout了,你可以使用setXXX()函数来设置layout中的这些对象,比如说setCentralWidget()函数就设置了它的Central Widget对象。
个人认为,如果你写的窗口并不遵循QMainWindow的模式,不如直接使用其他更为简单的类来写窗口。
Qt中QMainWindow对象设置layout的方法
最新推荐文章于 2025-02-09 14:21:19 发布