如何为自定义形状的Qpushbutton设置样式表

时间:2015-02-16 11:59:50

标签: c++ qt

我继承了Qpushbutton以使其成为圆形,如果我在这个类的痛苦尝试中设置背景它工作正常但我想为这个类的每个瞬间设置不同的图像所以我尝试通过seticon和setstylesheet设置它但它确实不行。可能是什么原因。请帮帮我。 提前谢谢。

这是我的代码。

CirclularButton::CirclularButton(QWidget *parent):QPushButton(parent)
{
}

void CirclularButton::paintEvent(QPaintEvent *e)
{
    QPainter p(this);
    p.setRenderHints(QPainter::Antialiasing);
    p.drawEllipse(0, 0, 50, 50);
}

and in another class where I am using it,

 CirclularButton *cir = new CirclularButton(this);
    cir->setGeometry(50,50,50,50);
    cir->setStyleSheet("border:1px solid red");

1 个答案:

答案 0 :(得分:0)

正如文档here中所述,您需要将此添加到您的绘画事件中:

 void paintEvent(QPaintEvent *e)
 {
     QStyleOption opt;
     opt.init(this);
     QPainter p(this);
     style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);

     //your other code here
 }