创建ComboBox的9x9网格时出现警告

时间:2017-03-19 15:15:16

标签: c++ qt combobox

我对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警告,窗口也需要一些时间才能出现: enter image description here

这看起来很像我做错了什么。有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

找到解决方案。我在添加所有组合框之后设置了Window小部件的布局,这导致所有组合框在布局之前被添加到窗口中。这弄乱了窗口的几何形状,导致它长达81个组合框,并产生警告。将this->setLayout(gl)行移至for循环之前解决了问题。