当我使用QGridLayout的时候,有时会碰见这种情况,就是一行有两个控件,总共两行,(a1,a2与b1,b2,a1,a2属于同一种控件,b1,b2属于另一种)b的宽度是a的整整两倍,在qt2中,我可以使用addMultiCellWidget进行处理,可是qt4中没有这个函数,查看了qt4中关于QGridLayout的文档有如下函数:
void addWidget ( QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 )
于是我就用
a1->addWidget(this, 0, 0);
b1->addWidget(this, 0, 1, 0, 2);
a2->addWidget(this, 1, 0);
b2->addWidget(this, 1, 1, 1, 2);
来进行处理,可是当我是用的时候,如果a是QLineEdit,而b是QComobox,就很可能出现b1与b2叠在一起的问题,我也不清楚是怎么回事,于是我又用了另一种方法,及
setColumnStretch(0, 1);
setColumnStretch(1, 2);
void addWidget ( QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 )
于是我就用
a1->addWidget(this, 0, 0);
b1->addWidget(this, 0, 1, 0, 2);
a2->addWidget(this, 1, 0);
b2->addWidget(this, 1, 1, 1, 2);
来进行处理,可是当我是用的时候,如果a是QLineEdit,而b是QComobox,就很可能出现b1与b2叠在一起的问题,我也不清楚是怎么回事,于是我又用了另一种方法,及
setColumnStretch(0, 1);
setColumnStretch(1, 2);
a1->addWidget(this, 0, 0);
b1->addWidget(this, 0, 1;
a2->addWidget(this, 1, 0);
b2->addWidget(this, 1, 1);
就是先把column的大小调整好,这样就能正确显示了。