qt网格布局的实现。。

UI上有一个Qwidget
我想在上面放个网格布局
布局里面放按钮
根据按钮的数量设置widget的尺寸
用代码方式实现

简单搞了一下,你的需求应该是跟这样差不多吧,那就点个采纳吧!


    QWidget w;            
    QPushButton *pb,*pb1,*pb2,*pb3,*pb4,*pb5,*pb6;
    pb=new QPushButton("AAA");        
    pb1=new QPushButton("BBB");    
    pb2=new QPushButton("CCC");
    pb3=new QPushButton("DDD");    
    pb4=new QPushButton("EEE");
    pb5=new QPushButton("FFF");    
    pb6=new QPushButton("GGG");
    QGridLayout *pg=new QGridLayout;
    pg->setVerticalSpacing(22);   //设置各子部件之间的垂直间距,不会为该间距分配索引。
    pg->addWidget(pb,0,0,1,1);  //把按钮pb添加到第0行0列,该按钮占据1行和1列单元格。
    pg->addWidget(pb1,0,1,1,1);
    pg->addWidget(pb2,1,0,1,3);  //该按钮占据3列单元格的宽度
    pg->addWidget(pb3,2,0,1,1,Qt::AlignBottom|Qt::AlignLeft);  //pb3在其单元格内左下对齐
    pg->addWidget(pb4,2,1,1,1);       
    pg->addWidget(pb5,2,2,1,1,Qt::AlignTop|Qt::AlignRight);
    pg->addWidget(pb6,3,0,1,1);
    w.setLayout(pg);

    pg->addWidget(pb,0,0,1,1);  
    pg->addWidget(pb1,0,1,1,1);

这样吧,将按钮每行两个添加到布局中,然后都是占据一行