Как добавить QPushButtonGroup в GridLayout Qt C ++ - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь создать игру-головоломку со следующим макетом:

enter image description here

Это базовая 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*)));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...