У меня есть собственный класс виджетов:
class MyWidget : public QWidget
{
// code
};
Я добавляю множество кнопок к QHBoxLayout
и устанавливаю этот макет для объекта MyWidget
.Я хочу, чтобы MyWidget
виджет имел ширину содержащегося в нем виджета (все такие виджеты имеют одинаковый размер).Поэтому я переопределил sizeHint()
:
QSize MyWidget::sizeHint() const
{
if (auto pLayout = layout())
{
auto pItem = pLayout->itemAt(0);
//std::cout << pItem->widget()->width() << std::endl;
if (pItem && pItem->widget())
return QSize{ pItem->widget()->width(), QWidget::sizeHint().height() };
}
return QWidget::sizeHint();
}
Теперь pItem->widget()->width()
всегда сообщает одно и то же значение, независимо от того, какой размер pItem->widget()
.В чем проблема?