QGroupBoxの枠の見た目を変えます。ついでに、ヘッダの高さを変更します。
QProxyStyleクラスを継承します。QStyle::CC_GroupBoxのときだけ、矩形のサイズを書き換えて返します。
class MyGroupBoxStyle : public QProxyStyle { private: int header_height; public: MyGroupBoxStyle() : header_height(-1) { } QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget) const { if (cc == QStyle::CC_GroupBox) { if (header_height >= 0) { QRect r = QProxyStyle::subControlRect(cc, opt, sc, widget); r.setY(header_height); return r; } } return QProxyStyle::subControlRect(cc, opt, sc, widget); } void setHeaderHeight(int h) { header_height = h; } }; class MyGroupBox : public QGroupBoxMyGroupBoxのコンストラクタで、スタイルオブジェクトを設定し、ヘッダの高さを変更します。
{ Q_OBJECT private: MyGroupBoxStyle style_; (略)
MyGroupBox::MyGroupBox(QWidget *parent) : QGroupBox(parent) { setStyle(&style_); style_.setHeaderHeight(32); }
void MyGroupBox::paintEvent(QPaintEvent *) で好きなように描画します。(ソース参照)