2012-09-04 34 views
0

这个问题似乎很简单,但我不2个hours.I解决它有这种布局:QGridLayout的addWidget挡住了我的项目

QGridLayout* view = new QGridLayout(this); 
view->setSpacing(15); 
view->addWidget(x0,2,1); 
view->addWidget(x1,1,1); 
view->addWidget(keyboard,2,0); 
view->addWidget(x2,1,0); 
view->addWidget(draw,0,0,0,1); 
resize (650,650); 
this->setLayout(view); 

我需要“画”(该项目的图形部分)占据项目的最高端(第0行,第0列至第1列)。

的问题是,什么价值,我把在构造函数中:

void QGridLayout :: addWidget (QWidget * widget, int fromRow, fromColumn int, int rowSpan, columnSpan int, Qt :: Alignment alignment = 0) 

所有其他窗口小部件就像封锁,我的程序运行时,我不能互动。

拥有经典的构造

void QGridLayout :: addWidget (QWidget * widget, int row, int column, Qt :: Alignment alignment = 0) 

没有问题,但Widget的 “画” 是不是我想要的(仅1列,而不是2)。

任何人都知道我在哪里做错了?

PS:小工具没有布局设置(除了一个数字小键盘来固定键的最小高度)。

回答

0

行跨度是文字,而不是索引像变量。如果你想把2列/行跨度,你必须把值2放在span params中。所以你需要修改这个view->addWidget(draw,0,0,0,1);view->addWidget(draw,0,0,1,2);。 1的行/列范围将仅包括“从行/列”而不是“从行/列+1”

+0

谢谢卡米尔,解决了! – Nicola