QGridLayout布局得使用,等分布局 Qt5版本下得使用

QGridLayout布局得使用,等分布局 Qt5版本下得使用

栅格等分设置

由于Qt5版本这个布局没有设置有多少行,多少列得函数,我们先调用这个,就指定了由多少行和列,并成功等分

    for (int i = 0; i< _rowGridlayNum; i++)
    {
        ui->gridLayout->setRowStretch(i,1);
    }
    for (int i = 0; i< _colGridlayNum; i++)
    {
        ui->gridLayout->setColumnStretch(i,1);
    }

使用代码

void change_video(int index, int flag)
{
    int row = 0; //行
    int column = 0;//列

    int needNumb = flag * flag;
    if ((_videoMaxCount -2)  < needNumb)
    {
        return;
    }

    for (int i = 0; i < needNumb; i++)
    {

        /* 将窗口插入到指定得布局格子中  16表格这么排列
        **    0,1,2,3,
        **    4,5,6,7,
        **    8,9,10,11,
        **    12,13,14,15
        */
        MYDEBUG<<"add row"<<row<<" column "<<column;
        ui->gridLayout->addWidget(_vecVideoMaskSig.at(i), row * (_rowGridlayNum/flag), column*(_colGridlayNum/flag),_rowGridlayNum/flag,_colGridlayNum/flag);
        column++;
        if (column == flag)
        {
            row++;
            column = 0;
        }
    }
    return;
}



case 1:
{
    ui->gridLayout->addWidget(_vecVideoMaskSig.at(0),0,0,_rowGridlayNum,_colGridlayNum);
    break;
}
case 2:
{
    ui->gridLayout->addWidget(_vecVideoMaskSig.at(_videoMaxCount - 1),0,0,_rowGridlayNum/4,_colGridlayNum);
    ui->gridLayout->addWidget(_vecVideoMaskSig.at(_videoMaxCount - 2),_rowGridlayNum - _rowGridlayNum/4,0,_rowGridlayNum/4,_colGridlayNum);
    ui->gridLayout->addWidget(_vecVideoMaskSig.at(0),_rowGridlayNum/4,0,_rowGridlayNum/2,_colGridlayNum/2);
    ui->gridLayout->addWidget(_vecVideoMaskSig.at(1),_rowGridlayNum/4,_colGridlayNum/2,_rowGridlayNum/2,_colGridlayNum/2);
    break;
}
case 3:
{
    ui->gridLayout->addWidget(_vecVideoMaskSig.at(0),0,_colGridlayNum/4,_rowGridlayNum/2,_colGridlayNum/2);
    ui->gridLayout->addWidget(_vecVideoMaskSig.at(1),_rowGridlayNum/2,0,_rowGridlayNum/2,_colGridlayNum/2);
    ui->gridLayout->addWidget(_vecVideoMaskSig.at(2),_rowGridlayNum/2,_colGridlayNum/2,_rowGridlayNum/2,_colGridlayNum/2);
    ui->gridLayout->addWidget(_vecVideoMaskSig.at(_videoMaxCount - 1),0,0,_rowGridlayNum/2,_colGridlayNum/4);
    ui->gridLayout->addWidget(_vecVideoMaskSig.at(_videoMaxCount - 2),0,_colGridlayNum - _colGridlayNum/4,_rowGridlayNum/2,_colGridlayNum/4);
    break;
}
case 4:
{
    change_video(0,2);
    break;
}

布局使用

设置效果示例
QGridLayout等分效果示例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值