QWidget :: layout () не может вернуть QGridLayout?

У меня есть QWidget, который содержит QGridLayout, который, в свою очередь, содержит несколько QPushButtons. Все это генерируется программно. Позже в коде (отдельно от того, где определен макет), мне нужно иметь возможность добавлять больше кнопок для определенных позиций строк / столбцов в макете.

Я пытался с помощью: widget->layout()->addWidget(button, row, col) ссылаться на макет и добавить кнопки. Тем не мение, widget->layout() возвращает только общий элемент QLayout, который не позволяет мне указывать значения строк и столбцов. Есть ли способ ссылаться на QGridLayout из определенного виджета, без необходимости знать макет по имени? Я использую Qt 4.8, если это имеет значение.

0

Решение

Вы всегда можете привести его к QGridLayout* от dynamic_cast:

auto gridLayout = dynamic_cast<QGridLayout*>(widget->layout());

Если ты уверен widget->layout() указывает на ваш QGridLayout Вам не нужно проверять. В противном случае, проверьте gridLayout против nullptr,

2

Другие решения


По вопросам рекламы [email protected]