QWidget中的QLayout

时间:2018-07-19 19:42:10

标签: c++ qt

我正在使用QT为我的未来游戏制作网格。

我的QGridlayout有问题:

这是我的Grid构造函数:

                                Grid::Grid(QWidget *parent) :
        QWidget(parent),
        m_grid(new Cell**[Y_MAX])
{
    QGridLayout             *layout = new QGridLayout(this);
    int                     x;
    int                     y;

    for (y = 0; y < Y_MAX; y++)
    {
        m_grid[y] = new Cell*[X_MAX];
        for (x = 0; x < X_MAX; x++)
        {
            m_grid[y][x] = new Cell(x, y, this);
            layout->addWidget(m_grid[y][x], y, x);
        }
    }
    this->setLayout(layout);
}

enter image description here

如您所见,所有单元格都在网格中

您会说好的,但是怎么了? 问题是程序启动时这是我的网格

enter image description here

要显示单元格,我需要调整窗口大小...为什么? ...

能帮我一下吗:)

谢谢您的时间

Ps:添加Cell类

也许从这里可以吗?

                                Cell::Cell(const int x, const int y, QWidget *parent) :
        QWidget(parent),
        m_x(x),
        m_y(y),
        m_btn(new QPushButton("", this))
{
    m_btn->setFixedSize(WIDTH, HEIGHT);
    m_btn->setFlat(true);
    m_btn->setEnabled(false);
    m_btn->setStyleSheet("border:1px solid #000000;border-radius: 13px;background-color: white;");
    QObject::connect(m_btn, SIGNAL(clicked()), this, SLOT(selected()));
}

1 个答案:

答案 0 :(得分:0)

您的自定义窗口小部件Cell在显示时需要具有正确的[大小提示] [1]。  见

  

sizeHint:const QSize

     

此属性保存小部件的建议大小

     

如果此属性的值是无效大小,则没有大小   推荐。

     

如果以下情况,sizeHint()的默认实现返回无效的大小:   此小部件没有布局,并返回布局的首选   否则大小。