查看完整版本: [-- 又请教大佬,如何动态切换布局?水平和垂直轮流换 --]

QTCN开发网 -> Qt基础编程 -> 又请教大佬,如何动态切换布局?水平和垂直轮流换 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

lanmanck 2020-06-22 21:16

又请教大佬,如何动态切换布局?水平和垂直轮流换

gui有一个lable和lineedit,希望搞个函数切换他们为水平或者垂直布局,
h文件:
  1. private:
        Ui::FormInput *ui;


        QHBoxLayout *m_Hlayout;
        QVBoxLayout *m_Vlayout;

cpp文件:
  1. FormInput::FormInput(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::FormInput)
    {
        ui->setupUi(this);

        m_Hlayout = new QHBoxLayout;
        m_Vlayout = new QVBoxLayout;
        /*&QHBoxLayout *layout = new QHBoxLayout;
        layout->addWidget(ui->label);
        layout->addWidget(ui->lineEdit);

        this->setLayout(layout);*/
    // 先全部装起来

        m_Hlayout->addWidget(ui->label);
        m_Hlayout->addWidget(ui->lineEdit);

        m_Vlayout->addWidget(ui->label);
        m_Vlayout->addWidget(ui->lineEdit);

        this->setLayout(m_Hlayout);
    }

    FormInput::~FormInput()
    {
        delete ui;
    }
    // 布局切换,不好使

    void FormInput::setLayout2(bool isH)
    {
        // 删除layout
        QLayoutItem *item;

        // https://blog.csdn.net/weixin_34357962/article/details/93190444
        /*while ((item = m_Vlayout->takeAt(0))){
            m_Vlayout->removeWidget(item->widget());
            //item->widget()->setParent(0);// 为空后从界面消失?
            delete item;
        }
        while ((item = m_Hlayout->takeAt(0))){
            m_Hlayout->removeWidget(item->widget());
            //item->widget()->setParent(0);
            delete item;
        }*/

        if(isH){
            //m_Hlayout->addWidget(ui->label);
            //m_Hlayout->addWidget(ui->lineEdit);
            //setLayout(m_Hlayout);
        }else{
            //m_Vlayout->addWidget(ui->label);
            //m_Vlayout->addWidget(ui->lineEdit);
            //setLayout(m_Vlayout);
        }
    }
如题,上面代码不好使所以注释了,如何动态切换呢?




lemonzll 2020-06-22 22:06
直接用QBoxLayout就可以了,用setDirection设置朝向

lanmanck 2020-06-23 09:12
lemonzll:直接用QBoxLayout就可以了,用setDirection设置朝向 (2020-06-22 22:06) 

真的可以,太爱你了

liulin188 2020-06-23 13:44


查看完整版本: [-- 又请教大佬,如何动态切换布局?水平和垂直轮流换 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled