给QWidget或者QDialog设置布局的时候方式很简单。创建好一个布局:mainLayout,然后不停地把各个控件往mainLayout里面放,最后调用setLayout(mainLayout)就行了。
对QWidget上进行布局一般都会用到布局管理器,不管是垂直布局管理器QVBoxLayout还是水平或者网格等,但要注意的是一个 QWidget上只能有一个布局管理器来管理布局。
有的时候对QMainWindow直接进行布局不管用,就是因为 QMainWindow是默认有layout的 ,所以再次设置layout会失效。
对QWidget上进行布局一般都会用到布局管理器,不管是垂直布局管理器QVBoxLayout还是水平或者网格等,但要注意的是一个 QWidget上只能有一个布局管理器来管理布局。
有的时候对QMainWindow直接进行布局不管用,就是因为 QMainWindow是默认有layout的 ,所以再次设置layout会失效。
那要是想要多重布局怎么办呢
在布局上创建QWidget作为跳板,然后来达到不同区域不同布局的方法。
m_pMainWidget = new QWidget(this);
//主布局,最底层
m_pVblMain = new QVBoxLayout(m_pMainWidget); // 最底层布局
QWidget pWidget1 = new QWidget(m_pMainWidget);
QWidget pWidget2 = new QWidget(m_pMainWidget);
m_pVblMain->addWidget(pWidget1);
m_pVblMain->addWidget(pWidget2);
QHBoxLayout *pHBoxLayout = new QHBoxLayout(pWidget1);
QGridLayout *pGridLayout = new QGridLayout(pWidget2); //通过一层pWidget1和pWidget2实现上下不同布局
或者直接使用verticalLayout->addLayout(horizontalLayout_2);来添加子布局,达成Widget和一个子布局进行布局的效果。