我对QT很新,刚刚开始学习如何使用Widgets创建GUI。我目前正在尝试使用QGridLayout和主窗口的QWidget创建一个9x9的ComboBoxes网格。我使用了几个嵌套for循环来创建网格,如下所示:
#include "window.h"
#include <QComboBox>
#include <QWidget>
#include <QPushButton>
#include <QGridLayout>
const int WIDTH = 800;
const int HEIGHT = 800;
Window::Window(QWidget *parent) : QWidget(parent)
{
resize(WIDTH,HEIGHT);
setWindowTitle("Grid");
QGridLayout* gl = new QGridLayout;
QComboBox* sel[81];
for(int i = 0;i<9;i++)
{
for(int j = 0;j<9;j++)
{
sel[(i*9)+j] = new QComboBox;
gl->addWidget(sel[(i*9)+j],i,j,0);
sel[(i*9)+j]->show();
}
}
this->setLayout(gl);
}
代码可以工作,但是我收到了很多Geometry警告,窗口也需要一些时间才能出现:
这看起来很像我做错了什么。有更好的方法吗?
答案 0 :(得分:1)
找到解决方案。我在添加所有组合框之后设置了Window小部件的布局,这导致所有组合框在布局之前被添加到窗口中。这弄乱了窗口的几何形状,导致它长达81个组合框,并产生警告。将this->setLayout(gl)
行移至for
循环之前解决了问题。