QT 完美实现圆形按钮

这篇具有很好参考价值的文章主要介绍了QT 完美实现圆形按钮。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

QT 版本:5.6.0

官方的按钮有些普通,如果我们想要换成自己喜欢的按钮而却无从下手,那么请继续往下阅读(皮一下)。

首先,可以在网络上搜索一下自己喜欢的按钮图形(或者可以自行绘制),我以下面的图形为例:

QT 完美实现圆形按钮

开始制作:

一、建立 QT 工程,并加入图形资源

创建好工程,向工程中加入资源文件:

QT 完美实现圆形按钮

在资源文件中加入两个按钮图片,一个用于正常显示,一个用于鼠标停留的时候显示:

QT 完美实现圆形按钮

二、构造 MyButton 类

该类继承自 QPushButton

借助 enterEvent 与 leaveEvent 实现按钮的动态变化。

mybutton.h 文件内容:

#ifndef MYBUTTON_H
#define MYBUTTON_H

#include <QPushButton>
#include <QWidget>

class MyButton : public QPushButton
{
    Q_OBJECT

public:
    MyButton(QWidget *);

protected:
    virtual void enterEvent(QEvent *);
    virtual void leaveEvent(QEvent *);
};

#endif // MYBUTTON_H

三、实现 MyButton 类的各个接口

mybutton.cpp 文件内容:

#include "mybutton.h"
#include "ui_widget.h"
#include <QPixmap>
#include <QBitmap>

MyButton::MyButton(QWidget *parent):
    QPushButton(parent)
{
    QPixmap pixmap(":/init.png");

    resize(pixmap.size());
    /* 设置按钮的有效区域 */
    setMask(QBitmap(pixmap.mask()));
    setStyleSheet("QPushButton{border-image: url(:/init.png);}");
}

void MyButton::enterEvent(QEvent *)
{
    setStyleSheet("QPushButton{border-image: url(:/click.png);}");
}

void MyButton::leaveEvent(QEvent *)
{
    setStyleSheet("QPushButton{border-image: url(:/init.png);}");
}

引入 QPixmap 的原因:借助 pixmap 实现按钮的 setMask 接口,该功能是禁止掉图形外的区域点击有效。

四、创建 MyButton

Widget.cpp 文件中加入:

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

    new MyButton(this);
    this->setWindowFlags(Qt::FramelessWindowHint);
}

运行效果:

初始按钮状态:

QT 完美实现圆形按钮

鼠标放上后状态:

QT 完美实现圆形按钮

后期补充:

设置屏蔽区域方法一:

QPixmap pixmap(":/init.png");

/* 设置按钮的有效区域 */
setMask(QBitmap(pixmap.mask()));

设置屏蔽区域方法二:文章来源地址https://www.toymoban.com/news/detail-411963.html

/* 半径为 35 的圆形按钮 */
setMask(QRegion(0,0,70,70,QRegion::Ellipse));

到了这里,关于QT 完美实现圆形按钮的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • QT实现按钮开关Form窗体的效果

    QT实现按钮开关Form窗体的效果

    实现效果叙述如下: MainWindow 中的按钮实现 Form 窗体的开关, Form 窗体的 关闭 按钮禁用掉,只允许使用窗体按钮进行,且关闭 MainWindow 按钮时 Form 窗体随之关闭。 注意: 要想实现关闭 MainWindow 按钮时 Form 窗体随之关闭, Form 窗体的 close() 在 MainWindow 的析构函数中无法实现,

    2024年02月15日
    浏览(13)
  • QT6实现按钮双击事件

    QT6实现按钮双击事件

    实现思路:利用事件过滤器实现按钮双击功能,主要是通过调用installEventFilter函数和重写事件eventFilter函数实现。   1、创建项目 启动Qt Creator,在主菜单的[文件]下,打开[新建文件或项目]菜单,弹出新建文件或项目对话框,创建Qt Widgets Application 项目,在Class Information步骤中

    2024年02月12日
    浏览(10)
  • QT圆形进度条(QT桌面项目光照强度检测)

    QT圆形进度条(QT桌面项目光照强度检测)

    本篇文章我们讲解QT实现圆形进度条,并实现动态的效果。 实现QT圆形进度条其实是非常简单的,思路就是画两个圆弧。 这里大家就会觉得很奇怪了为什么画两个圆弧就能实现圆形进度条了呢?那么下面我们一个个圆弧来画看看效果。 代码: 效果: 我们首先画一个0到360°角

    2024年02月06日
    浏览(11)
  • qt实现不定数量的按钮向前向后移动展示

    qt实现不定数量的按钮向前向后移动展示

    此文主要记录用qt实现按钮的移动,具体效果如下: 模拟按钮移动效果 本文记录了三种实现方式。 思路 用动态数组vector存放创建的按钮QPushButton的指针,使用两个同类型的二级指针QPushButton来指向数组中的元素,初始状态下,首尾指针都指向数组中第一个元素,随着界面初始

    2024年04月27日
    浏览(7)
  • qt 实现点击按钮显示弹窗,再次点击按钮或点击弹窗之外的区域,弹窗消失。

    LumenWidget 为主界面 setting_ 为弹窗界面 tbn_map_setting 为点击按钮 弹窗界面要先设置如下属性 第一步 主界面增加事件过滤器 第二步 将此事件过滤器加入到全部控件中 在主界面的构造函数加入以下代码 或 第三步 设置按钮点击槽函数,本文为 tbn_map_setting

    2024年02月11日
    浏览(12)
  • 【QT入门】 自定义标题栏界面qss美化+按钮功能实现

    【QT入门】 自定义标题栏界面qss美化+按钮功能实现

    往期回顾: 【QT入门】 鼠标按下和移动事件实现无边框窗口拖动-CSDN博客 【QT入门】 设计实现无边框窗口拉伸的公用类-CSDN博客 【QT入门】对无边框窗口自定义标题栏并实现拖动和拉伸效果-CSDN博客 1、实现悬浮样式改变 当鼠标悬浮到该按钮上时,样式会有一定改变。 2、添加

    2024年04月10日
    浏览(17)
  • 【五一创作】QML、Qt Quick /Qt中绘制圆形

    有多种方法可以在 Qt Quick 中绘制圆形。以下是一些主要方法: 使用 Canvas 元素 使用 Shapes 模块: a. 使用 PathArc 和 PathLine 元素组合绘制一个完整的圆形。 b. 使用 PathEllipse 元素绘制一个椭圆形,并将其设置为圆形。 使用 Rectangle 元素绘制圆角矩形并将圆角半径设置为宽度和高

    2024年02月03日
    浏览(14)
  • Qt系列——点击按钮关闭窗口的三种实现方式,附源码

    Qt系列——点击按钮关闭窗口的三种实现方式,附源码

    主要实现了点击QPushButton按钮,关闭窗口的功能。 简单设计界面如下,按钮名称如图中右侧红框中内容 源程序连接

    2024年02月11日
    浏览(24)
  • 在Qt中通过控制按钮实现登录界面密码与明码的转换

    在Qt中通过控制按钮实现登录界面密码与明码的转换

    首先,在Qt设计师界面界面上创建QLineEdit类文本框,用于输入密码,并且实现密码与明码相互转化。 默认情况下,输入密码的文本框应该是可见的并允许用户输入。 在界面上添加一个按钮,用于触发切换操作。这个按钮可以是一个简单的开关按钮,比如一个复选框或者一个切

    2024年01月21日
    浏览(33)
  • Qt实现跟随侧边栏的按钮控制侧边栏的展开与折叠

    Qt实现跟随侧边栏的按钮控制侧边栏的展开与折叠

    一、界面布局方式如图所示:SideToolWidget主体采用水平布局,包含两个QWidget,左侧为用于信息显示的leftWidget,右侧为容纳展开折叠按钮窗口btnWidget与云台工具显示窗口ptzWidget的containerWidget,内部窗体的具体布局如图所示; 二、实现方式描述,按钮窗口btnWidget与云台工具显示窗口

    2024年02月11日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包