提要

继承QPushButton后的按钮,设置其样式。

实现

在自定义的控件类中添加Q_OBJECT宏
在自定义的控件的类中重写paintevent函数
自定义的控件在使用时,必须指明其父对象
使用样式表设置样式,将类名改为自定义的类名

例子

直接上代码
myButton.h

#ifndef MYBUTTON_H
#define MYBUTTON_H#include <QWidget>
#include <QPushButton>class myButton : public QPushButton
{Q_OBJECT
public:myButton(int index,QWidget *parent = nullptr);~myButton();int getIndex();//获取按钮的下标void setSceneBtnId(int &id);//设置场景按钮的idvoid setSceneBtnName(QString &name);//设置场景按钮的名字void setSceneBtnNameId(int id,QString name);//设置场景按钮idint getSceneBtnId();//获取场景按钮idQString getScenBtnName();//获取场景按钮的名称void initBtnStyle();//设置按钮样式void getAdjustScreenRatio();//获取屏幕分辨率
public slots:void slot_setSceneBtnName(QString strName);//设置场景按钮的名称void slot_setSceneBtnId(int id);//设置场景按钮id
protected:void paintEvent(QPaintEvent *e);void mousePressEvent(QMouseEvent *e);
private:int m_index;//按钮的下标,用于区别点击的是哪个按钮int          m_id;//按钮的idQString      m_strName;//按钮的名称
};
#endif // MYBUTTON_H

myButton.cpp

#include "mybutton.h"
//#include "screenresolution.h"
#include <QMouseEvent>
#include <QStyleOption>
#include <QBitmap>
#include <QPixmap>
#include <QPainter>myButton::myButton(int index,QWidget *parent)
:QPushButton(parent),m_index(index)
{initBtnStyle();
}myButton::~myButton()
{}int myButton::getIndex()
{return m_index;
}void myButton::setSceneBtnId(int &id)
{m_id = id;
}void myButton::setSceneBtnName(QString &name)
{m_strName = name;
}void myButton::setSceneBtnNameId(int id, QString name)
{m_id = id;m_strName = name;
}int myButton::getSceneBtnId()
{return m_id;
}QString myButton::getScenBtnName()
{return m_strName;
}void myButton::getAdjustScreenRatio()
{}void myButton::initBtnStyle()
{QPixmap pixmap;QBitmap bit;pixmap.load(":/new/prefix1/images/sceneBtn.png");pixmap = pixmap.scaled(QSize(181 ,74),Qt::KeepAspectRatio);setFixedSize(pixmap.size());bit = pixmap.mask();setMask(bit);this->setStyleSheet("myButton{background-color:transparent;""border-image: url(:/new/prefix1/images/sceneBtn.png);""border: 1px solid #0D79FF;opacity: 0.7;""font-size: 18px;font-family: Microsoft YaHei;""font-weight: 400;color: #FFFFFF;}""myButton:pressed{border-image: url(:/new/prefix1/images/sysbtnPressed.png);""font-size: 18px;font-family: Microsoft YaHei;""font-weight: 400;color: rgba(255, 255, 255, 0.8);line-height: 18px;}");
}void myButton::slot_setSceneBtnName(QString strName)
{m_strName = strName;
}void myButton::slot_setSceneBtnId(int id)
{m_id = id;
}void myButton::paintEvent(QPaintEvent *e)
{Q_UNUSED(e);QStyleOption opt;opt.init(this);QPainter p(this);style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);QPushButton::paintEvent(e);
}void myButton::mousePressEvent(QMouseEvent *e)
{if(e->button() == Qt::RightButton){//创建编辑框,若已经创建则直接显示,绑定编辑框与按钮来存储修改的信息}QPushButton::mousePressEvent(e);
}

以上就是自定义控件的类,其使用如下,附上关键代码:

    myButton *btn = new myButton(0, this);//指出父类btn->setText("自定义类");btn->setGeometry(0,0,200,200);

以上就是自定义控件样式的设置。由于我重写鼠标点击事件的时候,忘记了父类的鼠标点击事件导致事件没有传递下去,从而没有出现点击后的效果,纠结了许久,终得解决。

qt中继承pushbutton自定义控件设置按钮样式相关推荐

  1. css设置按钮样式_使用CSS设置按钮样式的快速指南

    css设置按钮样式 by Ashwini Sheshagiri 通过Ashwini Sheshagiri Buttons have become an inevitable part of front ...

  2. 考虑到可访问性,使用 CSS 设置按钮样式

    按钮在网站上有很多用途--有用于悬停在图像上和在网页上导航的大按钮,以及用于显示有关您的产品或服务的信息的更微妙的按钮. 然而,按钮甚至可以吓倒经验丰富的网页设计师. 按钮有许多可能需要很长时间才能掌 ...

  3. Qt中“调试器未设置”的解决方法

    Qt中"调试器未设置"的解决方法 1.问题的提出 QtCreator + Qt5 进行开发.然而,在此过程中,我发现程序按F5可以直接运行.但设置断点进入调试模式时,却弹出&quo ...

  4. linux 终端 qmake,qt中的qmake命令设置

    之前安装QT-4.7.2,由于习惯了在命令行下编译源文件,我在网上搜了一下关于QT环境变量的配置方法,配置很简单,在/etc/profile文件里添加下面几行语句: export QTDIR=/opt ...

  5. html设置按钮样式表,如何使用样式表设置QToolButton的图标?

    我想使用样式表来设置QToolButton的图标,就像这样:如何使用样式表设置QToolButton的图标? #include #include QString FormStyleSheetStrin ...

  6. PyQt5 技术篇 - Qt Designer怎么用styleSheet设置按钮的背景

    本来想做个悬浮窗来着,设置按钮背景的时候卡住了,到底该怎么设置呢? 其实,就是点按钮,然后在 styleSheet 里加个 background-color,但是你却发现展示的出来的按钮背景一点都没变 ...

  7. Qt中textEdit文本编辑区设置滚动条自动向下滑落

    qt中textEdit接收次数较多时,滚动条会紧贴最上方,而最新接收到的信息确不能显示出来,如下所示: 解决这个问题只需在文本编辑区右击,转到槽,选择textChanged(),在槽函数中加入下面语句 ...

  8. 为什么latex中的宋体和黑体与word中不一样 如何设置字体样式 renewcommand和newcommand的区别

    用LaTeX写论文有好几年的时间了,自从之前写毕业论文,就有一个历史遗留问题,一直没有解决,不知道大家有没有发现LaTeX中的宋体命令\songti和黑体命令\heiti实际上输出的并不是正规的宋体和 ...

  9. QT中QSS的语法设置【颜色渐变处理】

    1.渐变颜色设置有:qlineargradient(线性渐变颜色设置),qradialgradient(辐射渐变),qconicalgradient(圆锥形渐变). 1 QLinearGradient ...

最新文章

  1. APUE学习笔记——第十章信号中10.15节例程的运行结果与书本里的不一样
  2. 这引人联想的机械右手!玩转魔方,灵活不输人类,OpenAI:前所未有
  3. [Ljava.lang.String和java.lang.String区别
  4. java 问题排查_JAVA问题排查笔记
  5. x265-确定slice type-1
  6. Azure DevOps Server (TFS)中代码文件换行问题解决方案(Git)
  7. 通用返回_Springboot项目整合通用mapper
  8. 这位博士跑赢“地震波”:提前 10 秒预警宜宾地震!
  9. 制作 macOS High Sierra U盘USB启动安装盘方法教程 (全新安装 Mac 系统)
  10. 【英语学习】【Daily English】U11 Work L04 Can you keep it a secret?
  11. Python基础(注释/算数运算符/变量类型/拼接字符串)
  12. jquery插件实现分页
  13. java 正则 非贪婪_正则表达式中贪婪模式与非贪婪模式的区别
  14. 推荐:绝对是最好用的公式编辑器
  15. ad9修改焊盘阻焊层大小
  16. 怎么查看CAD图纸呢?如何实现CAD快速看图?
  17. boa服务器如何运行cgi,BOA服务器与CGI
  18. 收藏!常用的档案馆(室)检索工具及编制方法
  19. CIO40: IT从之“CRM”与“OA”
  20. 荧光染料BDP FL maleimide/马来酰亚胺,CAS:773859-49-7

热门文章

  1. 如何玩转 WebGL 并行计算
  2. 2020年软件工程现状:Python或将成为第一大编程语言,中国开源涨势最猛
  3. 天弘基金交易数据清算从8小时缩至1.5小时 解决余额宝算力难题
  4. Fish Redux中的Dispatch是怎么实现的?
  5. 使用Grab的实验平台进行混沌实验编排
  6. 流量隔离方案 Dpath 护航双十一新零售
  7. 阿里云HBase发布冷存储特性,助你不改代码,1/3成本轻松搞定冷数据处理
  8. 阿里云加入开放媒体联盟AOM
  9. 听一个内行人讲云原生简史
  10. MySQL 可重复读,差点就让我背上了一个 P0 事故!