QT笔记-创建自定义按钮

QT笔记-创建自定义按钮

自定义按钮:隐藏图片空白区域,显示图片内的图案

注意事项

1.创建不规则按钮需添加新的.h和.cpp文件;
2.鼠标右键boke_03->添加新文件->c+±>c++ class ->命名选择widget类…下一步
3.需添加资源文件.prc
4.鼠标右键boke_03->添加新文件->QT->QT Resouruce file->下一步…到前缀名是必须要有一个符号/

代码示例:

.pro:无需添加代码

原先.h:无需添加代码

原先.cpp:

#include "boke_03.h"
#include "ui_boke_03.h"
//需添加anniu.h
#include<anniu.h>

boke_03::boke_03(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::boke_03)
{
    ui->setupUi(this);

    //创建不规则按钮需添加新的.h和.cpp文件;
    //鼠标右键boke_03->添加新文件->c++->c++ class ->命名选择widget类...下一步
    //需添加资源文件.prc
    //鼠标右键boke_02->添加新文件->QT->QT Resouruce file->下一步......到前缀名是必须要有一个符号/

    //创建按钮
    anniu * diqiu = new anniu(":/res/earth.png");
    //设置按钮显示窗口
    diqiu->setParent(this);
    //将按钮移动到(屏幕宽度减去自身宽度就是宽度了*需要放的百分比,高度*一定的高度)
    diqiu->move((this->width()*0.5 - diqiu->width()*0.5)*0.5,this->height()*0.2);
}

boke_03::~boke_03()
{
    delete ui;
}

新建.h:`

#ifndef ANNIU_H
#define ANNIU_H

//修改头文件widget为QPushButton
#include <QPushButton>
//需添加头文件
#include<QDebug>

//修改widget为QPushButton
class anniu : public QPushButton
{
    Q_OBJECT
public:
    //不需要注释掉
    //explicit anniu(QWidget *parent = 0);

    //说明函数
    anniu(QString normalImg,QString pressImg ="");

    //系统函数
    QString normalImgxs;
    QString pressedImgax;

signals:

public slots:
};

#endif // ANNIU_H

新建.cpp

#include "anniu.h"

//不需要注释掉
//anniu::anniu(QWidget *parent) : QWidget(parent)
//{

//}

//调用声明函数
anniu::anniu(QString normalImg,QString pressImg )
{
    //将系统函数赋予给自定义函数同样的功能
    this->normalImgxs = normalImg;
    this->pressedImgax = pressImg;
    //加载图片
    QPixmap tupian;
    //BOOL有返回值    封装底层按钮图片
    bool ret = tupian.load(this->normalImgxs);
    //判定图片加载是否成功
    if(!ret)
    {
    //图片加载失败,返回那个地址加载失败
    QString sb = QString("%1图片加载失败").arg(this->normalImgxs);
    qDebug() << sb;
    //加载失败后无需执行下一步
    return;
    }
    //设置图片大小:设置图片方框
    this->setFixedSize(tupian.width(),tupian.height());
    //设置不规则图片样式:没有图片的位置设置为透明
    this->setStyleSheet("QPushButton{border:0px;}");
    //设置图片:将图片显示上去
    this->setIcon(tupian);
    //设置图标大小
    this->setIconSize(QSize(tupian.width(),tupian.height()));
}

运行效果:

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值