布局
**1、**Qt提供了QHBoxLayout类、QVBoxLayout 类及QGridLayout类等的基本布局管理,分别是水平排列布局、垂直排列布局和网格排列布局。它们之间的继承关系如图所示。
**2、**布局中常用的方法有addWidget( ) 和addLayout( )
**(1)、**addWidget( ) 方法用于向布局中加入需要布局的控件,addWidget( ) 的函数原型如下:
void addWidget( )
{
QWidget *widget, //需要插入的控件对象
int fromRow, //插入的行
int fromCloumn, //插入的列
int rowSpan, //表示占用的行数
int columnSpan, //表示占用的列数
Qt::Alignment alignment=0; //描述各个控件的对齐方式
}
(2)、addLayout( ) 方法用于向布局中加入需要布局的控件,addLayout( ) 的函数原型如下:
void addLayout( )
{
QLayout *layout, //描述需要插入的子布局对象
int row, //插入的起始行
int column, //插入的起始列
int rowSpan, //表示占用的行数
int columnSpan, //表示占用的列数
Qt::Alignment alignment=0 //指定对齐方式
}
3、布局示例
(1)、QHBoxLayout类
-
代码示例
QWidget *window = new QWidget; QPushButton *button1 = new QPushButton("One"); QPushButton *button2 = new QPushButton("Two"); QPushButton *button3 = new QPushButton("Three"); QPushButton *button4 = new QPushButton("Four"); QPushButton *button5 = new QPushButton("Five"); QHBoxLayout *layout = new QHBoxLayout; layout->addWidget(button1); layout->addWidget(button2); layout->addWidget(button3); layout->addWidget(button4); layout->addWidget(button5); window->setLayout(layout); window->show();
-
布局显示
(2)、QVBoxLayout 类
-
代码示例
QWidget *window = new QWidget; QPushButton *button1 = new QPushButton("One"); QPushButton *button2 = new QPushButton("Two"); QPushButton *button3 = new QPushButton("Three"); QPushButton *button4 = new QPushButton("Four"); QPushButton *button5 = new QPushButton("Five"); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(button1); layout->addWidget(button2); layout->addWidget(button3); layout->addWidget(button4); layout->addWidget(button5); window->setLayout(layout); window->show();
- 布局显示
- 布局显示
(3)、QGridLayout类
-
代码示例
button_0 = new QPushButton("0"); button_1 = new QPushButton("1"); button_2 = new QPushButton("2"); button_3 = new QPushButton("3"); button_4 = new QPushButton("4"); button_5 = new QPushButton("5"); button_6 = new QPushButton("6"); button_7 = new QPushButton("7"); button_8 = new QPushButton("8"); button_9 = new QPushButton("9"); button_ce = new QPushButton("CE"); addButton = new QPushButton("+"); subButton = new QPushButton("-"); mulButton = new QPushButton("*"); divButton = new QPushButton("/"); button_result = new QPushButton("="); QGridLayout * layout = new QGridLayout; layout->addWidget(data,1,1,1,4,Qt::Alignment()); layout->addWidget(button_1,2,1,Qt::Alignment()); layout->addWidget(button_2,2,2,Qt::Alignment()); layout->addWidget(button_3,2,3,Qt::Alignment()); layout->addWidget(addButton ,2,4,Qt::Alignment()); layout->addWidget(button_4,3,1,Qt::Alignment()); layout->addWidget(button_5,3,2,Qt::Alignment()); layout->addWidget(button_6,3,3,Qt::Alignment()); layout->addWidget(subButton ,3,4,Qt::Alignment()); layout->addWidget(button_7,4,1,Qt::Alignment()); layout->addWidget(button_8,4,2,Qt::Alignment()); layout->addWidget(button_9,4,3,Qt::Alignment()); layout->addWidget(mulButton,4,4,Qt::Alignment()); layout->addWidget(button_ce,5,1,Qt::Alignment()); layout->addWidget(button_0,5,2,Qt::Alignment()); layout->addWidget(button_result,5,3,Qt::Alignment()); layout->addWidget(divButton ,5,4,Qt::Alignment()); layout->setMargin(12);
-
布局显示