1. qt 中对控件布局可以使用水平、垂直和Grid布局管理器来进行
QHBoxLayout:水平排列控件。
QVBoxLayout:垂直排列控件。
QGridLayout:按矩阵方式排列控件。
水平布局管理器可以把它所管理的部件以水平的顺序依次排开。垂直管理器类似,它可以把它所管理的部件以垂直的顺序依次排开。Grid布局管理器可以以网格的形式,将它所管理的部件以一定的矩阵形式排列.
2.在QT assistant 中查找QHBoxLayout,可以看到,应用布局的关键在于QBoxLayout的addWidget()函数,和QWidget的setLayout()函数,如果有多个Widget时,需要多层次的布局,此时还会用到addlayout()和addStretch()函数
对于何时用addlayout()和addStretch()以及怎么用的问题,看地址簿例子就会明白
在多层次布局时,用addlayout()可以向主布局添加子布局
而使用addStretch(),可以使布局中的widget之间添加延伸空间,默认值0表示widget之间没有延伸(因为我们默认的布局对齐方式为Qt::Alignment alignment = 0,它的含义是widget会填充整个cell,这样会使布局的widget之间有空间,使用addstretch()可以消除这种空间)
看qt学习之路(8)中对addstretch()的含义的解释。
要掌握这个内容,实现QT学习之路(7)的例子。
3. 关于QGridLayout,关键是要理解其中函数addwidget()中各个参数的含义
第一个的布局的参数的意思依次为:QGridLayoutName,行号,列号。
第二个的布局的参数的意思依次为:QGridLayoutName,行号,列号,行宽,列宽。
QT学习之路(7)中例子用QGridLayout来实现的源代码:
QGridLayout *mainLayout = new QGridLayout;
mainLayout->addWidget(m_pLabel,0,0,1,1);
mainLayout->addWidget(m_pLineEdit,0,1,1,1);
mainLayout->addWidget(m_pFindPushBtn,0,2,1,1);
mainLayout->addWidget(m_pMatchCaseCheckBx,1,0,1,1);
mainLayout->addWidget(m_pClosePushBtn,1,2,1,1);
mainLayout->addWidget(m_pSearchBackCheckBx,3,0,1,1);
this->setLayout(mainLayout);
4、用QT Designer中的布局管理器时,可以把该控件和窗口选中,选择layout in a Grid,从而可以使控件随窗口的大小而改变。
5.地址簿的例子:QGridLayout为主布局,结合QVBoxLayout和QHBoxLayout子布局
值得学习。