Динамическое создание вектора кнопок в виде сетки в Qt C++ ⇐ C++
-
Гость
Динамическое создание вектора кнопок в виде сетки в Qt C++
Полный новичок в Qt, так что потерпите. Я пытаюсь создать сетку кнопок, похожую на доску для крестиков-ноликов, но размер будет переменным. Я использовал некоторые тактики, найденные здесь и в Интернете, но не могу создать их динамически. У меня нет проблем, кроме динамического создания чего-либо. Буду признателен за любые советы и предложения.
Код был получен из https://github.com/aosama16/Qt-Tic-Tac-Toe в попытке понять.
struct Cell { QPushButton *cellBtn = nullptr; int row = defaults::INVALID_CELL; int col = defaults::INVALID_CELL; Cell(QPushButton *cellBtn, int row, int col) : cellBtn(cellBtn), строка(строка), столбец(столбец) {} }; void SOSGame::on_StartButton_clicked() { int size = ui->BoardSizeSlider->value(); buildCellButtons (размер); /*QMessageBox сообщение; msg.setText();*/ } std::vector SOSGame::buildCellButtons(int boardSize) { std::vector ячейки; cell.reserve(boardSize * boardSize); for (size_t row = 0; row GameBoard->addWidget(btn, static_cast(строка), static_cast(столбец), по умолчанию::GUI_CELL_ROW_SPAN, по умолчанию::GUI_CELL_COLUMN_SPAN); // Ссылка на ячейки ячейки.emplace_back(кнопка, строка, столбец); } } // Регулирует размер окна в соответствии с дочерними виджетами, добавляемыми динамически настроитьРазмер(); // Возврат по значению, чтобы разрешить RVO (Копировать Ellision) возвратные ячейки; }
Полный новичок в Qt, так что потерпите. Я пытаюсь создать сетку кнопок, похожую на доску для крестиков-ноликов, но размер будет переменным. Я использовал некоторые тактики, найденные здесь и в Интернете, но не могу создать их динамически. У меня нет проблем, кроме динамического создания чего-либо. Буду признателен за любые советы и предложения.
Код был получен из https://github.com/aosama16/Qt-Tic-Tac-Toe в попытке понять.
struct Cell { QPushButton *cellBtn = nullptr; int row = defaults::INVALID_CELL; int col = defaults::INVALID_CELL; Cell(QPushButton *cellBtn, int row, int col) : cellBtn(cellBtn), строка(строка), столбец(столбец) {} }; void SOSGame::on_StartButton_clicked() { int size = ui->BoardSizeSlider->value(); buildCellButtons (размер); /*QMessageBox сообщение; msg.setText();*/ } std::vector SOSGame::buildCellButtons(int boardSize) { std::vector ячейки; cell.reserve(boardSize * boardSize); for (size_t row = 0; row GameBoard->addWidget(btn, static_cast(строка), static_cast(столбец), по умолчанию::GUI_CELL_ROW_SPAN, по умолчанию::GUI_CELL_COLUMN_SPAN); // Ссылка на ячейки ячейки.emplace_back(кнопка, строка, столбец); } } // Регулирует размер окна в соответствии с дочерними виджетами, добавляемыми динамически настроитьРазмер(); // Возврат по значению, чтобы разрешить RVO (Копировать Ellision) возвратные ячейки; }
Мобильная версия