如何在Qt中创建圆形按钮并在其上设置圆形背景图像?我们如何在Qt中激活图像特定部分的像素

时间:2011-08-16 05:45:34

标签: qt

我想在我的项目中添加一个圆形按钮,我想在其上设置圆形背景图像,但问题是,在设置任何背景图像时,它始终采用矩形图像。

2 个答案:

答案 0 :(得分:0)

您必须使用透明背景的位图图像作为按钮。

    CustomButton::CustomButton(QString file,QString pressedfile,QWidget *parent,int id)
    : QPushButton(parent),FileName(file),PressedName(pressedfile),ID(id)
{
    connect(this,SIGNAL(clicked()),SLOT(slotClicked()));
    setStyleSheet("border: 2px");

QPixmap pixmap(file)    ;
setMinimumHeight(pixmap.height());
setMinimumWidth(pixmap.width());
setMaximumHeight(pixmap.height());
     setMaximumWidth(pixmap.width());

} void CustomButton::slotClicked() { emit clicked(ID); }

void CustomButton::setColor(const QColor &c) { fontColor=c; }

//Paint event of button void CustomButton::paintEvent(QPaintEvent *paint) { QPainter p(this); p.save();

p.setPen(Qt::blue); QPixmap pixmapdown; if(PressedName>0) pixmapdown.load(PressedName); else pixmapdown.load(FileName); QPixmap pixmap; pixmap.load(FileName); if(isDown()) p.drawPixmap(1,1,pixmapdown); else p.drawPixmap(1,1,pixmap); if(text().length()>0) { p.setPen(fontColor); p.drawText(rect(), Qt::AlignCenter|Qt::AlignHCenter, text()); } p.restore(); p.end();}

答案 1 :(得分:0)

您也可以使用QStyle派生类,但如果您真的只想要这些圆形按钮而不是大量具有自定义样式的小部件,那么这可能会超过顶层。