• 1875阅读
  • 3回复

[提问]又请教大佬,如何动态切换布局?水平和垂直轮流换 [复制链接]

上一主题 下一主题
离线lanmanck
 

只看楼主 倒序阅读 楼主  发表于: 2020-06-22
gui有一个lable和lineedit,希望搞个函数切换他们为水平或者垂直布局
h文件:
  1. private:
  2.     Ui::FormInput *ui;
  3.     QHBoxLayout *m_Hlayout;
  4.     QVBoxLayout *m_Vlayout;

cpp文件:
  1. FormInput::FormInput(QWidget *parent) :
  2.     QWidget(parent),
  3.     ui(new Ui::FormInput)
  4. {
  5.     ui->setupUi(this);
  6.     m_Hlayout = new QHBoxLayout;
  7.     m_Vlayout = new QVBoxLayout;
  8.     /*&QHBoxLayout *layout = new QHBoxLayout;
  9.     layout->addWidget(ui->label);
  10.     layout->addWidget(ui->lineEdit);
  11.     this->setLayout(layout);*/
  12. // 先全部装起来
  13.     m_Hlayout->addWidget(ui->label);
  14.     m_Hlayout->addWidget(ui->lineEdit);
  15.     m_Vlayout->addWidget(ui->label);
  16.     m_Vlayout->addWidget(ui->lineEdit);
  17.     this->setLayout(m_Hlayout);
  18. }
  19. FormInput::~FormInput()
  20. {
  21.     delete ui;
  22. }
  23. // 布局切换,不好使
  24. void FormInput::setLayout2(bool isH)
  25. {
  26.     // 删除layout
  27.     QLayoutItem *item;
  28.     // https://blog.csdn.net/weixin_34357962/article/details/93190444
  29.     /*while ((item = m_Vlayout->takeAt(0))){
  30.         m_Vlayout->removeWidget(item->widget());
  31.         //item->widget()->setParent(0);// 为空后从界面消失?
  32.         delete item;
  33.     }
  34.     while ((item = m_Hlayout->takeAt(0))){
  35.         m_Hlayout->removeWidget(item->widget());
  36.         //item->widget()->setParent(0);
  37.         delete item;
  38.     }*/
  39.     if(isH){
  40.         //m_Hlayout->addWidget(ui->label);
  41.         //m_Hlayout->addWidget(ui->lineEdit);
  42.         //setLayout(m_Hlayout);
  43.     }else{
  44.         //m_Vlayout->addWidget(ui->label);
  45.         //m_Vlayout->addWidget(ui->lineEdit);
  46.         //setLayout(m_Vlayout);
  47.     }
  48. }
如题,上面代码不好使所以注释了,如何动态切换呢?



精彩博客:labisart.com
离线lemonzll

只看该作者 1楼 发表于: 2020-06-22
直接用QBoxLayout就可以了,用setDirection设置朝向
4条评分好评度+1贡献值+1金钱+1威望+1
liulin188 好评度 +1 - 2020-06-23
liulin188 贡献值 +1 - 2020-06-23
liulin188 威望 +1 - 2020-06-23
liulin188 金钱 +1 - 2020-06-23
离线lanmanck

只看该作者 2楼 发表于: 2020-06-23
回 lemonzll 的帖子
lemonzll:直接用QBoxLayout就可以了,用setDirection设置朝向 (2020-06-22 22:06) 

真的可以,太爱你了
精彩博客:labisart.com
在线liulin188

只看该作者 3楼 发表于: 2020-06-23
https://wiki.qt.io/Qt_5.12_Release
https://wiki.qt.io/New_Features_in_Qt_5.12
https://wiki.qt.io/Qt_5.12.0_Known_Issues
https://www.qt.io/blog/qt-5.13.2-released
https://www.qt.io/blog/qt-creator-4.10.2-released
https://wiki.qt.io/Qt_5.12_Tools_and_Versions
快速回复
限100 字节
 
上一个 下一个