0

这个问题看起来很简单,但我没有在 2 小时内解决它。我有这个布局:

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) 

没问题,但小部件“绘制”不是我想要的(只有 1 列而不是 2 列)。

有人知道我在哪里做错了吗?

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

4

1 回答 1

0

行跨度是文字,而不是像变量一样的索引。如果要放置 2 列/行跨度,则必须将值 2 放入跨度参数中。因此,您需要将其修改view->addWidget(draw,0,0,0,1);view->addWidget(draw,0,0,1,2);. 行/列跨度为 1 将仅包括“来自行/列”而不是“来自行/列 + 1”

于 2012-09-04T10:48:35.010 回答