Qt QPushButton实现文字覆盖在背景图上的方式

1、如果需要绘制的图比较少,可以直接使用样式表
 ui->pbtn_hangding->setStyleSheet("background-image:url(:/img/背景图.bmp); "
                                     "background-position:center center;"
                                     "color:white; text-align:center bottom;");
2、如果项目已经设计好,或者图片较多希望抽出通用方法   

// icon为已经设置了图片的变量,可以通过形参传递  , 也可以通过QPixmap 直接加载图片
    QPixmap pixmap = icon.pixmap(76, 60); 
    QFont font; // QFont font("Microsoft YaHei");
    font.setPointSize(12);
    QFontMetrics fm(font);
    QString text = "F2行定";
    int x = (pixmap.width() - fm.width(text)) / 2;
    int y = pixmap.height() - 5;
    QPainter painter(&pixmap);
    painter.setFont(font);
    painter.setPen(Qt::white);
    painter.drawText(x, y, text);
    QIcon icon1;
    icon1.addPixmap(pixmap);
    ui->pbtn_hangding->setIcon(icon1);

1、2两种方法都可以实现文字覆盖显示在背景图上的效果(我的背景图是一个底色+图标的整体)

3、如果图标和文字是分开的,想要实现文字在图标的上下左右方向,并能控制间距,可以采用布局的方式

    QLabel *iconLabel = new QLabel;
    QLabel *textLabel = new QLabel;
    iconLabel->setPixmap(QPixmap(":/img/行定1.bmp"));
    textLabel->setText("F2行定");
    QVBoxLayout *vlayout = new QVBoxLayout(); // 可以使用横向或纵向布局
    vlayout->addWidget(iconLabel);
    vlayout->addWidget(textLabel); // 可以通过setContentsMargins调整间距
    ui->pbtn_hangding->setLayout(vlayout);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值