布局管理

1.布局管理系统

Qt包含了一组布局管理器类来描述怎样在应用窗口界面对部件进行布局,QLayout的几个子类,就成为布局管理器。
所有的QWidget的子类的对象 都可以用布局管理器来进行管理,QWidget::setLayout()可以在一个部件上应用布局管理器。
一旦一个部件设置了布局管理器,他会完成下面的几个任务:
①定位子部件
②感知窗口默认大小
③感知窗口最小大小
④改变大小处理
⑤当内容改变事后会自动更新下面的内容:
a.字体大小,文本伙子部件的其他内容随之改变
b.隐藏或显示子部件
c.移除一个子部件


QLayoutItem类提供了一个供QLayout操作的抽象项目。

说明
QBoxLayout给子部件设置水平或垂直布局
QButtonGroup管理一组按钮部件的容器
QFormLayout管理输入表格部件和他们相关联的标签部件
QGraphicsAnchor 
QGraphicsAnchorLayout 
QGridLayout栅格布局
QGroupBox带有标题的组管理容器
QHBoxLayout水平管理组
QLayout基类
QLayoutItem 
QSizePolicy 
QSpacerItem 
QStackedLayout 
QStackedWidget 
QVBoxLayout 
QWidgetItem 

2.QBoxLayout 布局

其有2种布局,水平布局和垂直布局

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();

效果


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 栅格布局

添加该布局后,使得一个部件区域划分成小格子,即由每个小格子组成。
把子部件添加到该部件后,可以指定其添加到的某个格子上。
    MainWindow *w = new MainWindow;
    QPushButton *button1 = new QPushButton("按钮1");
    QPushButton *button2 = new QPushButton("按钮2");
    QPushButton *button3 = new QPushButton("按钮3");
    QPushButton *button4 = new QPushButton("按钮4");

    w->grid_layout_->addWidget(button1,0,0);
    w->grid_layout_->addWidget(button2,1,1);
    w->grid_layout_->addWidget(button3,2,2);
    w->grid_layout_->addWidget(button4,3,3);
    w->show();
效果


4.QFormLayout 表单布局管理器

QFormLayout类用来管理表格的输入部件及其相关的标签,将他的子部件分为两列,左边是标签,右边是输入部件,比如行编辑器或者数字选择框等。
如果仅仅起到这样的作用,那么QGridLayout也可以完成这样的工作。
QFormLayout有其特殊功能。
    	 QWidget *window = new QWidget;
         QPushButton *button1 = new QPushButton("One");
         QLineEdit *lineEdit1 = new QLineEdit();
         QPushButton *button2 = new QPushButton("Two");
         QLineEdit *lineEdit2 = new QLineEdit();
         QPushButton *button3 = new QPushButton("Three");
         QLineEdit *lineEdit3 = new QLineEdit();

         QFormLayout *layout = new QFormLayout;
         layout->addRow(button1, lineEdit1);
         layout->addRow(button2, lineEdit2);
         layout->addRow(button3, lineEdit3);

         window->setLayout(layout);
         window->show();
效果


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值