Я пытаюсь создать игру-головоломку со следующим макетом:
Это базовая c слайд-головоломка, поэтому нажмите на Кнопка меняет свое значение на соседнюю кнопку, только если она пуста.
У меня проблемы с добавлением кнопок из контейнера QButtonGroup в QGridLayout. Я не могу найти какие-либо соответствующие примеры в Интернете по этому вопросу. Я могу получить доступ к отдельным кнопкам в группе кнопок и изменить их значения, но не могу заставить их правильно отображаться в окне. Буду признателен за любую помощь!
Заголовочный файл:
/** A single tile in the GUI of the 9 puzzle */
class Tile : public QPushButton {
Q_OBJECT
public:
Tile(int tileNumber);
int getNumber() {return m_Number;}
private:
int m_Number;
};
/** A view for the puzzle */
class PuzzleView : public QWidget {
Q_OBJECT
public:
PuzzleView(PuzzleModel* model);
public slots:
void refresh();
void tryToSlide(QAbstractButton* button);
private:
PuzzleModel *m_Model;
QGridLayout *m_Layout;
QButtonGroup m_Tiles;
};
Файл реализации:
Tile::Tile(int tileNumber): m_Number(tileNumber) {
}
PuzzleView::PuzzleView(PuzzleModel* model) : m_Model(model) {
// Create the buttons
// This is where I'm having an issue (simplified to one button for clarity)
m_Tiles.addButton(new Tile(1), 0);
m_Layout = new QGridLayout();
m_Layout->addWidget(m_Tiles.button(0), 0, 0);
connect (&m_Tiles, SIGNAL(buttonClicked(QAbstractButton*)),
this, SLOT(tryToSlide(QAbstractButton*)));
}