在设计较复杂的GUI用户界面时,仅通过指定窗口部件的父子关系以期达到加载和排列窗口部件的方法是行不通的,最好的办法是使用Qt提供的布局管理器。
QGridLayout *mainLayout=new QGridLayout(this);
mainLayout->addWidget(label1,0,0);
mainLayout->addWidget(lineEdit,0,1);
mainLayout->addWidget(label2,1,0);
mainLayout->addWidget(button,1,1);
QObject::setLayout(mainLayout);
其中,
<1>QGridLayout *mainLayout=new QGridLayout(this):创建一个网络布局管理器对象mainLayout,并用this指出父窗口。
<2>mainLayout->addWidget(...):分别将控件对象label1,label2,lineEdit和button放置在该管理器中,还可以在创建布局管理器对象时不必指明父窗口
<3>QObject::setLayout(mainLayout):将布局管理器添加到对应的窗口部件对象中。因为这里的主窗口就是父窗口,所以直接调用QObject::setLayout(mainLayout)即可。