• 2587阅读
  • 3回复

QLabel 绘制圆形图片 [复制链接]

上一主题 下一主题
离线shixingya
 

只看楼主 倒序阅读 楼主  发表于: 2018-02-02

class MaskLabel : public QLabel
{
    void paintEvent(QPaintEvent *e)
    {
        if(pixmap()){
            QPainter painter(this);
            painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform);
            QPainterPath path;
            int round = qMin(width()*0.8, height()*0.8);
            path.addEllipse(width()*0.1,height()*0.2, round, round);
            painter.setClipPath(path);
            painter.drawPixmap(width()*0.1,height()*0.2, width()*0.8, height()*0.8, *pixmap());
        }else{
            QLabel::paintEvent(e);
        }
    }

};
1条评分贡献值+1
cluckly 贡献值 +1 - 2018-02-02
自2012年接触QT以来,写QT一直是我每天的工作,这些年在中国运载火箭技术研究院、国美电器、启明星辰、广联达等公司工作过,为军工科研、政府项目、电商项目、在线教育用Qt开发过多个的工具或系统,也接触过中科方德Linux、Mac Qt、Windows Qt, 有同行的朋友,可以加我微信,一起进步
我叫史星亚 微信: EagleAndy  
加好友时请备注  来自qtcn
我有个Qt交友群,拉您入群
非工作时间 可以电联 18610042411
离线shixingya

只看该作者 1楼 发表于: 2018-03-15
class MaskLabel : public QLabel
{
public:
    MaskLabel(QWidget* parent=nullptr):QLabel(parent)
    {
       setStyleSheet ("border:0px groove gray;border-radius:20px; ");
    }
protected:
void paintEvent(QPaintEvent *e)
{
     if(pixmap()){
         QPainter *painter=new QPainter(this);
         QPainterPath path;
         path.addEllipse(width()*0.1,height()*0.1, width()*0.8,height()*0.8);
         painter->setClipPath(path);
         painter->drawPixmap(0,0,width(),height(), *pixmap());
     }else{
         QLabel::paintEvent(e);
     }
}

};
自2012年接触QT以来,写QT一直是我每天的工作,这些年在中国运载火箭技术研究院、国美电器、启明星辰、广联达等公司工作过,为军工科研、政府项目、电商项目、在线教育用Qt开发过多个的工具或系统,也接触过中科方德Linux、Mac Qt、Windows Qt, 有同行的朋友,可以加我微信,一起进步
我叫史星亚 微信: EagleAndy  
加好友时请备注  来自qtcn
我有个Qt交友群,拉您入群
非工作时间 可以电联 18610042411
离线shixingya

只看该作者 2楼 发表于: 2018-03-15
回 shixingya 的帖子
shixingya:class MaskLabel : public QLabel
{
public:
    MaskLabel(QWidget* parent=nullptr):QLabel(parent)
    {
....... (2018-03-15 19:14) 

透明圆角
自2012年接触QT以来,写QT一直是我每天的工作,这些年在中国运载火箭技术研究院、国美电器、启明星辰、广联达等公司工作过,为军工科研、政府项目、电商项目、在线教育用Qt开发过多个的工具或系统,也接触过中科方德Linux、Mac Qt、Windows Qt, 有同行的朋友,可以加我微信,一起进步
我叫史星亚 微信: EagleAndy  
加好友时请备注  来自qtcn
我有个Qt交友群,拉您入群
非工作时间 可以电联 18610042411

只看该作者 3楼 发表于: 07-11
楼主您好,请问怎样能显示出一个圆形的动图(.gif)呢
快速回复
限100 字节
 
上一个 下一个