qt动态布局详解,qt 动态布局

  qt动态布局详解,qt 动态布局

  一、效果展示

  动态布局无非就是打破原先的布局,然后再重新进行布局

  清空布局

  void主窗口:deletelitemsoflayout(QLayout * layout)

  {

  QLayoutItem *子项目

  while ((child=layout- takeAt(0))!=nullptr)

  {

  ///setParent为空,防止删除之后界面不消失

  如果(子部件())

  {

  child-widget()-set parent(nullptr);

  }

  else if(子布局())

  {

  deletelitemsoflayout(child-layout());

  }

  删除孩子;

  }

  }二、源码#ifndef

  #定义

  #包含主窗口

  #包含调试器

  #包含窗口

  #包含图片

  #包含QComboBox

  #包含水平布局

  #包含垂直布局

  #包含栅格布局

  #包括本布局

  QT _ BEGIN _命名空间

  命名空间Ui {类主窗口}

  QT _ END名称空间

  类主窗口:公共主窗口

  {

  q _对象

  公共:

  主窗口(q widget * parent=nullptr);

  ~主窗口();

  void layout _ 1();

  void layout _ 2();

  void layout _ 3();

  void layout _ 4();

  void layout _ 5();

  void deleteAllitemsOfLayout(QLayout * layout);

  q widget * L;

  q widget * C;

  QComboBox *组合框

  QVector QLabel * vec _ label

  QVBoxLayout *主布局

  qhbox布局* layout _ L;

  公共插槽:

  void slot _ current exchange(int);

  私人:

  ui:主窗口* ui

  };

  # endif//主窗口_ H # include 主窗口。 h

  #include ui_mainwindow.h

  主窗口:主窗口(q widget * parent)

  :QMainWindow(父)

  ,用户界面(新Ui:主窗口)

  {

  ui- setupUi(这个);

  this- setFixedSize(1080,720);

  L=新的窗口

  L- setFixedSize(1080,600);

  C=新的QWidget

  C- setFixedSize(1080,120);

  mainLayout=新QVBoxLayout

  主布局-添加小部件(L);

  主布局-添加小部件(C);

  主布局-设置边距(0);

  主布局-设置间距(0);

  this-centralWidget()-设置布局(主布局);

  for(int I=0;I 9;我)

  {

  vec_label.push_back(新的QLabel(QString(通道%1).arg(I 1)));

  vec _ label[I]-set样式表( background-color:RGB(66,66,66);颜色:rgb(221,221,221);字体大小:30px 文本对齐:居中;);

  }

  layout _ L=new QHBoxLayout(L);

  layout _ 1();

  comboBox=new QComboBox(C);

  comboBox- setGeometry(870,30,200,30);

  comboBox- addItem(布局1);

  comboBox- addItem(布局2);

  comboBox- addItem(布局3);

  comboBox- addItem(布局4);

  comboBox- addItem(布局5);

  connect(comboBox,SIGNAL(current ind exchange(int)),this,SLOT(SLOT _ current ind exchange(int)));

  }

  主窗口:~主窗口()

  {

  删除ui;

  }

  void主窗口:slot _ current exchange(int n)

  {

  开关(名词)

  {

  案例0:

  {

  layout _ 1();

  打破;

  }

  案例1:

  {

  layout _ 2();

  打破;

  }

  案例二:

  {

  layout _ 3();

  打破;

  }

  案例三:

  {

  layout _ 4();

  打破;

  }

  案例4:

  {

  layout _ 5();

  打破;

  }

  }

  }

  void MainWindow:layout_1()

  {

  deletelitemsoflayout(layout _ L);

  QGridLayout * gridLayout=new QGridLayout;

  gridLayout-add小部件(vec _ label[0],0,0);

  layout _ L-添加布局(gridLayout);

  }

  void MainWindow:layout_2()

  {

  deletelitemsoflayout(layout _ L);

  QGridLayout * gridLayout=new QGridLayout;

  gridLayout-add小部件(vec _ label[0],0,0);

  gridLayout-add小部件(vec _ label[1],0,1);

  layout _ L-添加布局(gridLayout);

  }

  void MainWindow:layout_3()

  {

  deletelitemsoflayout(layout _ L);

  QGridLayout * gridLayout=new QGridLayout;

  gridLayout-add小部件(vec _ label[0],0,0);

  gridLayout-add小部件(vec _ label[1],0,1);

  gridLayout-add小部件(vec _ label[2],1,0);

  gridLayout-add小部件(vec _ label[3],1,1);

  layout _ L-添加布局(gridLayout);

  }

  void MainWindow:layout_4()

  {

  deletelitemsoflayout(layout _ L);

  QGridLayout * gridLayout=new QGridLayout;

  gridLayout-add小部件(vec _ label[0],0,0,2,2);

  gridLayout-add小部件(vec _ label[1],0,2);

  gridLayout-add小部件(vec _ label[2],1,2);

  gridLayout-add小部件(vec _ label[3],2,0);

  gridLayout-add小部件(vec _ label[4],2,1);

  gridLayout-add小部件(vec _ label[5],2,2);

  layout _ L-添加布局(gridLayout);

  }

  void MainWindow:layout_5()

  {

  deletelitemsoflayout(layout _ L);

  QGridLayout * gridLayout=new QGridLayout;

  gridLayout-add小部件(vec _ label[0],0,0);

  gridLayout-add小部件(vec _ label[1],0,1);

  gridLayout-add小部件(vec _ label[2],0,2);

  gridLayout-add小部件(vec _ label[3],1,0);

  gridLayout-add小部件(vec _ label[4],1,1);

  gridLayout-add小部件(vec _ label[5],1,2);

  gridLayout-add小部件(vec _ label[6],2,0);

  gridLayout-add小部件(vec _ label[7],2,1);

  gridLayout-add小部件(vec _ label[8],2,2);

  layout _ L-添加布局(gridLayout);

  }

  void主窗口:deletelitemsoflayout(QLayout * layout)

  {

  QLayoutItem *子项目

  while ((child=layout- takeAt(0))!=nullptr)

  {

  ///setParent为空,防止删除之后界面不消失

  如果(子部件())

  {

  child-widget()-set parent(nullptr);

  }

  else if(子布局())

  {

  deletelitemsoflayout(child-layout());

  }

  删除孩子;

  }

  }

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: