Я пытаюсь выложить сетку квадратных пользовательских (подклассов) QWidgets внутри QGridLayout и QScrollArea.
Я хочу, чтобы это работало, выбирая количество QGridLayout
столбцов и создавая квадраты правильных размеров.
То, что я уже пробовал сделать,
- Раскладка / изменение размера QWidgets вручную, но это было неаккуратно и медленно
- Установка
QScrollArea::widgetsResized
в значение true, которое правильно изменяет ширину, но не высоту, см. снимок экрана < / а>.
Я пробовал установить QSizePolicy
и переопределить QWidget::heightForWidth
вместе с установкой QScrollArea::widgetsResized
в моем настраиваемом классе, производном от QWidget, например:
CustomWidget::CustomWidget(...)
{
...
QSizePolicy policy(QSizePolicy::Preferred, QSizePolicy::Preferred);
policy.setHeightForWidth(true);
setSizePolicy(policy);
}
...
int CustomWidget::heightForWidth(int width) const
{
return width; // square
}
Но CustomWidget::heightForWidth
никогда не вызывается.
Любая помощь будет оценена.
РЕДАКТИРОВАТЬ: я уже сделал то, что предложил этот ответ, мои пользовательские виджеты находятся в макете (QGridLayout).
setFixedSize
для каждого виджета? - person Pavel Strakhov   schedule 05.06.2015height
, что и для каждой (переменной) ширины. Я попытался переопределитьsizeHints()
, но это не сработало, так как мне нужно вернуть ширину и высоту в этом методе. - person blashyrk   schedule 05.06.2015