Witam.
Piszę sobie w c++/QT sapera. Mam jednak problem z wielkością okna w którym jest plansza. Mianowicie gdy wybieram nową grę(o innym rozmiarze) to usuwam PushButtony co mam i tworzę nowe, jednak rozmiar okna nie dostosowuje się ładnie.
Tak jest na początku.
Później zmniejszam ilość Buttonów i robi się takie coś:
Jednak chciałbym, by było takie coś:
Dołączam też kod źródłowy:
#include "MainWindow.hpp"
#include <QDebug>
#include <QSizePolicy>
MainWindow::MainWindow(QWidget *parent)
{
setMinimumSize(50,50);
newGameAction = this->menuBar()->addAction("Nowa gra");
connect(newGameAction, SIGNAL(triggered()), this, SLOT(newGame()));
centralWidget = new QWidget();
this->setCentralWidget(centralWidget);
this->timeWidget = new QLCDNumber(this);
mainLayout = new QVBoxLayout();
centralWidget->setLayout(mainLayout);
boardLayout = new QGridLayout();
boardLayout->setSizeConstraint(QLayout::SetMinAndMaxSize);
boardLayout->setHorizontalSpacing(0);
boardLayout->setVerticalSpacing(0);
upperLayout = new QHBoxLayout();
upperLayout->addWidget(&button);
upperLayout->addStretch(1);
upperLayout->addWidget(timeWidget);
mainLayout->addLayout(upperLayout);
mainLayout->addLayout(boardLayout);
newGame();
show();
}
void MainWindow::prepareButtons(unsigned int height, unsigned int width)
{
for (unsigned int i = 0; i<height; i++)
{
QList<FieldButton*> tmp;
for (unsigned int j = 0; j<width; j++)
{
FieldButton *button = new FieldButton(this);
tmp.append(button);
boardLayout->addWidget(button, i, j);
}
buttons.append(tmp);
}
}
void MainWindow::deleteButtons()
{
for (unsigned int i = 0; i<buttons.size(); i++)
{
for (unsigned int j = 0; j<buttons[0].size(); j++)
{
delete buttons[i][j];
}
}
buttons.clear();
}
MainWindow::~MainWindow()
{
delete boardLayout;
delete upperLayout;
delete mainLayout;
delete timeWidget;
}
void MainWindow::newGame()
{
if (dial.exec())
{
deleteButtons();
prepareButtons(dial.height, dial.width);
this->adjustSize();
}
}
Proszę o pomoc, wskazówkę. Serdecznie dziękuję :)