Как сохранить определенное соотношение высоты и ширины виджета в qt5?

Я попытался переопределить методы hasHeightToWidth() и heightToWidth(), но по какой-то причине это не сработало. Есть ли какой-нибудь полный пример, который я могу использовать?

Обновление 1:

class MyWidget : public QWidget {
    Q_OBJECT

public:
    MyWidget() {
        QSizePolicy sizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
        sizePolicy.setHeightForWidth(true);
        setSizePolicy(sizePolicy);
    }
    bool hasHeightForWidth() const override {
        std::cout << __FUNCTION__ << std::endl;
        return true;
    }
    int heightForWidth(int w) const override {
        std::cout << __FUNCTION__ << " " << w << std::endl;
        return w;
    }
    QSize sizeHint() const override {
        return QSize(100, heightForWidth(100));
    }
};

Экземпляры MyWidget вставляются в QHBoxLayout.

Я использую qt5.

Отладка std::cout показывает, что hasHeightForWidth и heightForWidth вызываются много раз


person alkedr    schedule 28.05.2013    source источник
comment
См. этот пост: stackoverflow.com/questions/452333/   -  person Phlucious    schedule 29.05.2013
comment
И, возможно, этот: qt-project.org/forums/viewthread/5320   -  person Phlucious    schedule 29.05.2013
comment
@Phlucious, я видел обе страницы, я сделал, как там написано (переопределено hasHeightToWidth и heightToWidth)   -  person alkedr    schedule 29.05.2013
comment
Вы также изменили sizePolicy для своего виджета, как предлагает этот парень?   -  person Phlucious    schedule 29.05.2013
comment
@Phlucious, да, я сделал. Добавил код в вопрос.   -  person alkedr    schedule 29.05.2013