如何保持Qt5中小部件的特定高宽比?

alk*_*edr 5 c++ qt qt5

我尝试了覆盖方法hasHeightToWidth()和heightToWidth(),但是由于某些原因,该方法不起作用。有没有可以使用的完整示例?

Upd1:

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));
    }
};
Run Code Online (Sandbox Code Playgroud)

MyWidget实例将插入QHBoxLayout中。

我用的是qt5。

调试std :: cout的演示hasHeightForWidth和heightForWidth被多次调用