Qt创建一个自定义按钮

2023-11-18

1、概述

   案例:编写一个自定义按钮。要求:1.给按钮添加自定义背景 2.监听按钮点击事件

2、代码案例

  1.创建一个类让其继承QWidget,点击下一步下一步最后完成

  2.打开MyPushButton,让其继承QPushButton。如下所示:

MyPushButton::MyPushButton(QWidget *parent) : QPushButton(parent)
{

}

  3.重载其构造函数,让其传入按钮背景图片的路径。可设按钮的固定尺寸大小、icon、样式等。设置完成后这个自定义按钮就完成了。

MyPushButton::MyPushButton(QString normalImg,QString pressImg){
    normalImgPath = normalImg;
    pressedImgPath = pressImg;
    QPixmap pixmap;
    //判断是否能正常加载图片,若不能则提示用户
    bool ret = pixmap.load(normalImgPath);
    if(!ret){
       qDebug() << normalImg <<"加载图片失败" ;

    }
    //设置图片固定尺寸
    this->setFixedSize(pixmap.width(),pixmap.height());
    //设置不规则图片的样式表
    this->setStyleSheet("QPushButton{border:0px}");
    //设置图标
    this->setIcon(pixmap);
    //设置图标大小
    this->setIconSize(QSize(pixmap.width(),pixmap.height()));


}

  4.新建一个window类进行测试,在测试类的构造方法中加入如下的代码,并使用信号和槽函数监听按钮的点击事件

//创建开始按钮
    MyPushButton *startBtn = new MyPushButton(":/res/MenuSceneStartButton.png");
    startBtn->setParent(this);
    startBtn->move(this->width()*0.5-startBtn->width()*0.5,this->height()*0.7);

    //连接信号槽,监听开始按钮点击
    connect(startBtn,&MyPushButton::clicked,[=](){
       //点击自定义按钮的时候这个代码块的代码会执行。
    });

  案例如下图所示:一个圆润的开始按钮

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Qt创建一个自定义按钮 的相关文章

  • 具有多个父项的 Qt 树模型

    我想构建一棵树 其中一个元素可以引用另一个元素 我想要构建的树是 像这样的东西 A B C D E F P this is a pointer to C D first child of C E second child of C I fo
  • PyQt - 如何从给定的小部件获取顶级父级?

    给定的小部件如何访问它最旧的父级 即顶级小部件 我需要 showMinimized it 现在我正在使用 self parent parent parent showMinimized 但这似乎不是最好的方法 如果它移动了 我需要手动更改父
  • 如何使 Python、QT 和 Webkit 在无头服务器上工作?

    我有 Debian Linux 服务器 我用它来做各种事情 我希望它能够完成一些我需要定期完成的网络抓取工作 这段代码可以是在这里找到 http bit ly QeqvzX import sys from PyQt4 QtGui impor
  • QML:无法读取未定义的属性“xxx”

    ApplicationWindow id root property string rootName rootName visible true width 800 height 400 title qsTr WatchFace Maker
  • 如何在 Qt Creator 中编辑 QtWebKit 的右键上下文菜单?

    好吧 这是我的困境 我正在使用 Qt Creator 制作一个使用 Webkit 的简单应用程序 我认为 Qt Creator 会有一种简单的方法来使用信号和槽编辑器编辑右键单击上下文菜单 但事实证明这不是真的 我知道 webkit 有与上
  • 有没有办法向 QListView 添加部分?

    我正在使用 Qt5 2 和 C 来实现一个应用程序 需要显示一个列表 其中包含类似于下面的示例图像的部分 source ngo hung com http www ngo hung com files images contact list
  • Qt qDebug() 在 Windows shell 中不起作用

    我正在使用一个qDebug Qt 框架的printf屏幕上有东西 当我从 Qt Creator 运行应用程序时它工作得很好 但是当我尝试从 Windows 执行它时cmd它什么也没显示 为什么会发生这种情况 你必须添加 CONFIG con
  • 用 C++/Qt 编写的程序中的 RTF / doc / docx 文本提取

    我正在写一些程序Qt https en wikipedia org wiki Qt 28software 29 C 我需要从中读取文本微软Word https en wikipedia org wiki Microsoft Word RTF
  • Retina 显示屏中具有 QOpenGLWIdget 的 Qt MainWindow 显示错误大小

    我有一个 Qt 应用程序MainWindow 我嵌入一个QOpenGLWidget在里面 一切正常 直到我开始使用 Apple Retina 显示屏并在高 DPI 模式下运行我的应用程序 我的QOpenGLWidget只是它应该具有的大小的
  • QTableView 并双击一个单元格

    我正在开发测试用例编辑器 该编辑器包含 USART 传输和接收数据包格式 编辑器是一个表格视图 发送和接收数据包的长度为八个字节 例如 0x01 0x02 0x03 0x08 它在我的第五和第六栏中 现在 我希望此列中的单元格为只读 但是当
  • Qt中用于线程间通信的类设计

    问题陈述 用相机跟踪物体并相应地移动相机的方位角和仰角 Process 相机获取物体的图像 处理相机的每一帧以查找物体 应该被跟踪 并将每帧中生成的信息传递给机械设备 万向节 以平移和倾斜方式移动摄像机 Design 主 Gui 在一个线程
  • 如何在Android中使用QML - QWebView

    我想在 Android 中部署一个 YouTube 应用程序 但它只能在我的电脑上运行 在安卓上不起作用 它不加载任何视频 问题仅出在 QWebView 上 我使用了与此类似的代码 http doc qt io archives qt 5
  • 无法运行 Qt 应用程序:找不到版本“Qt_5”

    我运行 Ubuntu 16 04 LTS 我的问题是我无法运行可以编译的 Qt5 应用程序 这是我尝试运行它时得到的结果 home user Desktop sconfig dist Release GNU Linux SCongif us
  • 使用 QGraphicsScene 实现流畅的动画

    我希望我的问题并不总是同样的问题 我有一个 QGraphicsScene 它的项目是一些 QGraphicsPixmap 我用一个计时器来移动它们 每秒 SetX 10 我设置 10是因为窗口大100 使用这个解决方案我的动画不流畅 我想我
  • QFileSystemModel setRootPath

    我正在尝试创建一个 Qt 应用程序来显示文件夹 Mac OS 中的 Users 文件夹 的内容 这是代码 QFileSystemModel dirModel new QFileSystemModel dirModel gt setRootP
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • Qt 支持 Windows 蓝牙 API 吗?

    谁能告诉我 Qt 是否支持 Windows 蓝牙 API 如果是这样 您能否分享一些有关如何使用它的信息 自上次答复以来 这个问题的答案发生了一些变化 Qt 5 2 版为 Linux BlueZ 和 BlackBerry 设备实现了蓝牙 A
  • 在 Qt 中,许多插槽连接到同一信号,它们在发出信号时是否按顺序调用?

    In the Qt文件说 如果多个插槽连接到一个信号 则这些插槽将 按照它们连接的顺序一个接一个地执行 当信号发出时 但在connect 功能 设置Qt ConnectionType输入为Qt QueuedConnection意思是 当控制
  • 使 QLabel 的像素图透明

    我有一个带有 QLabel 和像素图的主窗口 我想让它透明 或不那么不透明 我正在使用下面的代码 ui gt label gt setAttribute Qt WA TranslucentBackground ui gt label gt
  • 使用 QGraphicsScene 和 QGraphicsView 在 Qt 中开始基于 Tile 的游戏

    我将开始在 Qt 中编写基于 2D 图块的游戏 并阅读 QGraphicsScene 和 QGraphicsView 类 这些类旨在显示和处理大量 2D 对象 我的问题是 使用 QGraphicsScene 创建一个包含大量图块的世界是否可

随机推荐

  • Nomad系列-Nomad网络模式

    系列文章 Nomad 系列文章 概述 Nomad 的网络和 Docker 的也有很大不同 和 K8s 的有很大不同 另外 Nomad 不同版本 Nomad 1 3 版本前后 或是否集成 Consul 及 CNI 等不同组件也会导致网络模式各
  • python中多进程(multiprocessing)

    python中多进程 multiprocessing 一 multiprocessing中使用子进程概念 from multiprocessing import Process 可以通过Process来构造一个子进程 p Process t
  • USB匹配电阻

    做过USB的人都或许有一个纠结 那就是D 和D 上到底要串多大的电阻 串在源端还是终端 我想说 网络上的说法都不完全正确 首先USB有低速 全速和高速之分 在低速和全速模式下是电压驱动的 驱动电压为3 3V 但在高速模式下是电流驱动的 驱动
  • 计算机组成原理期末复习【超实用】

    计算机组成原理 第二版 唐朔飞 编著 课本有些地方还不错 可以下载电子版看看 b站2小时讲解链接 https www bilibili com video BV1x4411q7Fz 初次录讲解视频 各种差错和画音不同步请各位谅解 我录到后面
  • Qt常用数据类型

    常用数据类型 1 常用基本数据类型 常用接口 求绝对值 T是泛型 以下都是 T qAbs const T t 最大值和最小值 会把最大或最小的返回出来 T qMax const T value1 const T value2 T qMin
  • 解决笔记本电脑(i)某个键的字母按不出来

    前两天清理电脑键盘没有关机然后清理了一下键盘 再使用的时候就打不出 i 字母了 重启也没用 看网上说 使用Fn F11 可以 但是可能每个电脑配置不同 使用失败 最后 想了想F11 不行 最后试试F12吧 最后Fn F11 成功解锁 哈哈哈
  • ffmpeg通过命令拉udp的rtsp流的方法

    ffmpeg用命令拉流是非常简单易用的 特别是对这种常见的摄像头的流 rtsp 10 1 21 121 554 profile1 稍微复杂一点 rtsp admin a1234567 10 1 21 121 554 cam realmoni
  • 【sqli-labs】 less5 GET - Double Injection - Single Quotes - String (双注入GET单引号字符型注入)...

    双注入查询可以查看这两篇介绍 https www 2cto com article 201302 190763 html https www 2cto com article 201303 192718 html 简而言之就是构造如下的查询
  • 相关性和因果性

    一 如果A和B相关 有至少五种可能性 1 A导致B 2 B导致A 3 C导致A和B 4 A和B互为因果 5 小样本引起的巧合 二 相关是线性关性 非线性的因果关系对应的相关性可能会减弱或消失 统计上A和B具有线性 或者非线性 关系 通常代表
  • AccessibilityEvent常用详解

    AccessibilityEvent常用详解 本文是作者在使用android的AccessibilityService时记录使用到的AccessibilityEvent的一些情况 如有错误欢迎指正 dinjet foxmail com 屏幕
  • C++(VS基础操作)基础操作

    VS的基本操作 1 创建项目在起始页中选择 2 创建文件夹 CPP Project 起文件名称 3 起项目名称 CPPLesson01 4 解决方案 一个解决方案能存放多个项目 一个项目只能选择一个解决方案 5 创建空项目 6 c 使用开发
  • 编译原理(静态语义分析)

    文章目录 语法制导翻译 中间代码简介 后缀式 三地址码 符号表 声明语句的翻译 数组元素的引用 例题 数组元素引用的语法制导翻译 布尔表达式 拉链与回填 语法制导翻译 语义分析的作用 检查结构正确的句子表达的意思是否正确 执行规定的语义动作
  • RHEL6进入救援模式

    1 救援模式 救援模式作用 更改root密码 恢复硬盘 文件系统操作 系统无法启动时 通过救援模式启动 2 放入系统光盘 重启从光盘启动 4 选择语言 默认English就行 5 保持默认即可 6 网口检查 不需要 直接选择NO 7 直接c
  • 函数重载 隐藏 重写 覆盖

    重载 Overload 重载是比较容易弄明白的 定义 重载是指不同的函数使用相同的函数名 但是函数的参数个数或类型不同 参数列表不同 调用的时候根据函数的参数来区别不同的函数 函数重载跟返回值无关 规则 函数名相同 必须具有不同的参数列表
  • 【Linux篇】fputs、fgets函数

    一 fputs函数 include
  • 水下图像采集

    原文 http blog csdn net sunlinyi66 article details 50153875 NASA提供的雾天标准图像 这次终于找到了雾天处理图像来自哪里了 雾天图像 http dragon larc nasa go
  • 机器学习——朴素贝叶斯算法

    朴素贝叶斯算法 1 引言 2 朴素贝叶斯分类方法 3 概率基础 4 朴素贝叶斯特征提取 5 朴素贝叶斯分类的sklearn实现 6 垃圾短息分类 补充 1 引言 贝叶斯方法是一个历史悠久 有着坚实的理论基础的方法 同时处理很多问题时直接而又
  • django自动生成接口文档

    django自动生成接口文档 先pip安装coreapi包 配置 在urls py 在对应的serializers py文件设置备注 先pip安装coreapi包 pip install coreapi 小知识 这里不需要使用 导出pip所
  • 亚马逊云服务器aws配置ssl https证书

    文章目录 1 申请证书 1 1 搜索ssl 1 2 请求证书 1 3 请求共有证书 1 4 添加域名 1 5 选择验证方法 提交审核 等待大概10分钟 审核成功 2 配置证书 2 1 创建负载均衡器 2 2 选择https 2 3 配置负载
  • Qt创建一个自定义按钮

    1 概述 案例 编写一个自定义按钮 要求 1 给按钮添加自定义背景 2 监听按钮点击事件 2 代码案例 1 创建一个类让其继承QWidget 点击下一步下一步最后完成 2 打开MyPushButton 让其继承QPushButton 如下所