在QT Designer

时间:2015-09-20 06:42:34

标签: qt qwidget qt-designer

我正在尝试将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子类化并将默认小部件提升到我自己的小部件时我在哪里做错了。

感谢您的回答。

0 个答案:

没有答案