QT布局管理程序实现的学习

   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()中各个参数的含义          

void QGridLayout::addWidget ( QWidget * widget, int row, int column, Qt::Alignment alignment = 0 )

void QGridLayout::addWidget ( QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 )

   第一个的布局的参数的意思依次为: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子布局

                      值得学习。

 

 

 

你可能感兴趣的:(qt)