问题似乎很简单,但我没有在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)
没问题,但Widget“draw”不是我想要的(只有1列而不是2列)。
任何人都知道我做错了吗?
PS:窗口小部件没有布局设置(除了数字键盘以固定键的最小高度)。
答案 0 :(得分:0)
行跨度是文字,而不是索引变量。如果要放置2列/行跨度,则必须将值2放在span params中。因此,您需要将此view->addWidget(draw,0,0,0,1);
修改为view->addWidget(draw,0,0,1,2);
。行/列跨度为1将仅包括“来自行/列”而不是“来自行/列+ 1”