У меня есть QWidget, который содержит QGridLayout, который, в свою очередь, содержит несколько QPushButtons. Все это генерируется программно. Позже в коде (отдельно от того, где определен макет), мне нужно иметь возможность добавлять больше кнопок для определенных позиций строк / столбцов в макете.
Я пытался с помощью: widget->layout()->addWidget(button, row, col)
ссылаться на макет и добавить кнопки. Тем не мение, widget->layout()
возвращает только общий элемент QLayout, который не позволяет мне указывать значения строк и столбцов. Есть ли способ ссылаться на QGridLayout из определенного виджета, без необходимости знать макет по имени? Я использую Qt 4.8, если это имеет значение.
Вы всегда можете привести его к QGridLayout*
от dynamic_cast
:
auto gridLayout = dynamic_cast<QGridLayout*>(widget->layout());
Если ты уверен widget->layout()
указывает на ваш QGridLayout
Вам не нужно проверять. В противном случае, проверьте gridLayout
против nullptr
,