#pragma once #include #include // A push button whose face is built of widgets rather than of a caption: an option's // name over the recipe line stating what it makes (REQ-UI-SELECT-OPTIONS), or a module's // name over what it costs (REQ-MOD-UI-DIALOG). // // It exists only to be measured correctly. QPushButton computes its size hint from its // text and icon and ignores a layout set on it, so a button carrying a face of widgets // would be sized as if it were empty and clip everything in it. This asks the layout // instead, and then lets the style add what the button's own frame needs. class OptionButton : public QPushButton { Q_OBJECT public: explicit OptionButton(QWidget* parent = nullptr); QSize sizeHint() const override; QSize minimumSizeHint() const override; private: // The style's button size for the given face size, or the plain QPushButton hint // when there is no face to measure. QSize sizeForFace(const QSize& faceSize) const; };