我正在尝试将QWidget子类化为自定义我自己的TitleBar(因为我创建了主框架FramelessWindowHint
)。
子类似乎是:
TitleBar::TitleBar(QWidget *parent)
{
this->setAutoFillBackground(true);
int width = this->width();
this->minButton = new QToolButton(this);
this->closeButton = new QToolButton(this);
this->icon = new QLabel(this);
this->icon->setGeometry(0, 0, 25, 25);
this->minButton->setGeometry(width - 46, 0, 23, 23);
this->closeButton->setGeometry(width - 23, 0, 23, 23);
QPixmap minPix = style()->standardPixmap(QStyle::SP_TitleBarMinButton);
QPixmap closePix = style()->standardPixmap(QStyle::SP_TitleBarCloseButton);
QPixmap iconPix = QPixmap(QString::fromUtf8(":/Resources/HandySearch.ico")).scaled(icon->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
this->icon->setPixmap(iconPix);
this->minButton->setIcon(minPix);
this->closeButton->setIcon(closePix);
this->minButton->setStyleSheet("background-color:transparent;");
this->closeButton->setStyleSheet("background-color:transparent;");
}
然后我转向QT Designer并将一个QWidget添加到MainFrame中,并将其推广到我自己的类TitleBar,但似乎没有任何东西出现。但是如果我直接将代码(创建minButton和closeButton)放在主框架的构造函数中,按钮就会按预期显示。
那么我怎么能自定义我自己的标题栏(或其他任何东西)?我不知道在将QWidget子类化并将默认小部件提升到我自己的小部件时我在哪里做错了。
感谢您的回答。