《Qt入门(四)-- Qt动态布局QGridLayout》

QGridLayout 添加窗口addWidget函数
初始化布局
依次是从左往右添加第0行,第0列 ;第0行,第1列;第1行,第0列;第1行,第1列;
然后依次对setRowStretch设置行比例参数(4:1),setColumnStretch设置列比例(2:1)

    QFramlayout = new QGridLayout();
    QFramlayout->setSpacing(5);//设置间距
    
    QFramlayout->addWidget(pfdstructment   , 0, 0);//往网格的不同坐标添加不同的组件
    QFramlayout->addWidget(enginestructment, 0, 1);
    QFramlayout->addWidget(pfdengstructment, 1, 0);
    QFramlayout->addWidget(engpfdstructment, 1, 1);
    QFramlayout->setRowStretch(   0, 4);//设置行列比例系数
    QFramlayout->setRowStretch(   1, 1);
    QFramlayout->setColumnStretch(0, 2);
    QFramlayout->setColumnStretch(1, 1);
    this->setLayout(QFramlayout);//设置顶级布局管理器

在这里插入图片描述
切换显示单一页面
动态切换页面时,先使用removeWidget清除窗口和setRowStretch设置比例0不然会导致比例依旧存在
setVisible让窗口实现隐藏功能

/*******************************************************************
** 函数名:      RemoveAllPage
** 函数描述:     清除页面
** 参数:       painter 画刷
** 返回:
********************************************************************/
void Qflyfram::RemoveAllPage(void)
{
    QFramlayout->removeWidget(pfdstructment);
    QFramlayout->removeWidget(enginestructment);
    QFramlayout->removeWidget(pfdengstructment);
    QFramlayout->removeWidget(engpfdstructment);

    QFramlayout->setRowStretch(   0, 0);//第二个参数为0表示清除设置比例
    QFramlayout->setRowStretch(   1, 0);
    QFramlayout->setColumnStretch(0, 0);
    QFramlayout->setColumnStretch(1, 0);

    pfdstructment   ->setVisible(false);
    enginestructment->setVisible(false);
    pfdengstructment->setVisible(false);
    engpfdstructment->setVisible(false);
}

/*******************************************************************
** 函数名:      ShowPage
** 函数描述:    显示切换页面
** 参数:
** 返回:
********************************************************************/
void Qflyfram::ShowPage(int index)
{
    RemoveAllPage();

    if(0 == index){
        QFramlayout->addWidget(pfdstructment   , 0, 0);//往网格的不同坐标添加不同的组件
        QFramlayout->addWidget(enginestructment, 0, 1);
        QFramlayout->addWidget(pfdengstructment, 1, 0);
        QFramlayout->addWidget(engpfdstructment, 1, 1);

        QFramlayout->setRowStretch(   0, 1);//设置行列比例系数
        QFramlayout->setRowStretch(   1, 0);
        QFramlayout->setColumnStretch(0, 0);
        QFramlayout->setColumnStretch(1, 0);

        pfdstructment   ->setVisible(true);
        enginestructment->setVisible(false);
        pfdengstructment->setVisible(false);
        engpfdstructment->setVisible(false);
    }else if(1 == index){
        QFramlayout->addWidget(pfdstructment   , 0, 0);//往网格的不同坐标添加不同的组件
        QFramlayout->addWidget(enginestructment, 0, 1);
        QFramlayout->addWidget(pfdengstructment, 1, 0);
        QFramlayout->addWidget(engpfdstructment, 1, 1);

        QFramlayout->setRowStretch(   0, 0);//设置行列比例系数
        QFramlayout->setRowStretch(   1, 1);
        QFramlayout->setColumnStretch(0, 0);
        QFramlayout->setColumnStretch(1, 0);

        pfdstructment   ->setVisible(false);
        enginestructment->setVisible(true);
        pfdengstructment->setVisible(false);
        engpfdstructment->setVisible(false);
    }else if(2 == index){
        QFramlayout->addWidget(pfdstructment   , 0, 0);//往网格的不同坐标添加不同的组件
        QFramlayout->addWidget(enginestructment, 0, 1);
        QFramlayout->addWidget(pfdengstructment, 1, 0);
        QFramlayout->addWidget(engpfdstructment, 1, 1);

        QFramlayout->setRowStretch(   0, 0);//设置行列比例系数
        QFramlayout->setRowStretch(   1, 0);
        QFramlayout->setColumnStretch(0, 1);
        QFramlayout->setColumnStretch(1, 0);

        pfdstructment   ->setVisible(false);
        enginestructment->setVisible(false);
        pfdengstructment->setVisible(true);
        engpfdstructment->setVisible(false);
    }else if(3 == index){
        QFramlayout->addWidget(pfdstructment   , 0, 0);//往网格的不同坐标添加不同的组件
        QFramlayout->addWidget(enginestructment, 0, 1);
        QFramlayout->addWidget(pfdengstructment, 1, 0);
        QFramlayout->addWidget(engpfdstructment, 1, 1);

        QFramlayout->setRowStretch(   0, 0);//设置行列比例系数
        QFramlayout->setRowStretch(   1, 0);
        QFramlayout->setColumnStretch(0, 0);
        QFramlayout->setColumnStretch(1, 1);

        pfdstructment   ->setVisible(false);
        enginestructment->setVisible(false);
        pfdengstructment->setVisible(false);
        engpfdstructment->setVisible(true);
    }

}

在这里插入图片描述

/*******************************************************************
** 函数名:      ShowAll
** 函数描述:     显示所有页面
** 参数:       
** 返回:
********************************************************************/
void Qflyfram::ShowAll(void)
{
    RemoveAllPage();
    QFramlayout->setSpacing(5);//设置间距

    QFramlayout->addWidget(pfdstructment   , 0, 0);//往网格的不同坐标添加不同的组件
    QFramlayout->addWidget(enginestructment, 0, 1);
    QFramlayout->addWidget(pfdengstructment, 1, 0);
    QFramlayout->addWidget(engpfdstructment, 1, 1);

    QFramlayout->setRowStretch(   0, 4);//设置行列比例系数
    QFramlayout->setRowStretch(   1, 1);
    QFramlayout->setColumnStretch(0, 2);
    QFramlayout->setColumnStretch(1, 1);

    pfdstructment   ->setVisible(true);
    enginestructment->setVisible(true);
    pfdengstructment->setVisible(true);
    engpfdstructment->setVisible(true);
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未*望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值