首页 > 其他分享 >用QT实现自定义样式按钮控件

用QT实现自定义样式按钮控件

时间:2025-01-11 22:33:08浏览次数:3  
标签:控件 QT 自定义 pushButton 30 start ui 按钮 资源

目录

一、资源准备

二、添加资源

1)创建资源文件

 2)添加图片资源

 三、设置按钮样式

1)定义QPixmap对象

2)设置按钮图标

3)图标切换

4)实际效果

四、总结


在用QT开发界面程序时,默认的按钮控件样式不美观。当需要构建自定义的按钮样式,使界面显示效果更加美观时,可以对QT提供的默认按钮控件进行样式修改。本文提供了一种基于QT默认按钮控件,实现自定义样式按钮的方法。

一、资源准备

根据设计需要,准备我们需要的按钮样式图片。此处以实现一个播放按钮为例,当点击按钮时,按钮显示样式在播放和暂停图标之间进行切换。按钮显示图片如下所示,图片是无边框的。

二、添加资源

1)创建资源文件

(1)在工程目录树中,选中工程,点击鼠标右键,选择“add new...",在新建文件窗口中依次选择“Qt”,“Qt Resource File”,然后单击“Choose...”。如下图所示。

(2)上一步完成后,弹出如下窗口, 名称可以自行填写,路径保持当前工程的默认路径即可,然后单击下一步,在弹出的窗口中单击确定,完成资源文件的创建。这时我们在工程目录树中可以看到多了一级子目录,工程文件(.pro)中多了一段代码,如下图所示。

 

 2)添加图片资源

(1)在工程目录树中,选中资源文件“Resources.qrc”,单击右键弹出菜单,选择“Open in Editor”,在右侧界面中打开编辑器。

(2)如下图所示,在编辑器中可以看到已经添加了默认的前缀。通常我们不需要,在下方的编辑框中删除,输入自定义的前缀符号即可,此处我设置的前缀为“/images”。如果需要添加多个前缀,则点击“Add Prefix”。说明一下,此处设置的前缀就是后续在编写代码时所需要引用的资源路径。

 (3)设置好前缀后就可以添加图片资源了。在添加图片资源之前,为便于工程文件的管理,建议在工程目录文件路径下新建一个文件夹(此处新建了images文件夹),将我们所需要的两张图片拷贝到该文件夹(images)里面。如下图所示。

(4) 回到资源文件编辑界面,单击“Add Files”按钮,打开文件路径。找到上一步创建的文件路径,并同时选中路径中的播放和暂停图片,然后单击确定。在资源编辑窗口中可以看到图片资源已经添加到资源文件中,如下图所示。

(5) 保存资源文件。在推出资源文件编辑前,必须先保存,可以使用“ctrl+s”,或者在QT Creator的文件菜单中选择保存,否则上述操作将丢失。保存成功后,可以在工程目录树中看到已经添加好的资源,如下图所示。自此,我们可以在编写代码的过程中直接调用这些资源了。

 三、设置按钮样式

1)定义QPixmap对象

首先在UI对象的头文件中定义两个QPixmap对象,用于加载两张图片。在头文件中定义,是为了避免在使用图片资源时重复加载,减少代码量。然后在UI对象的构造函数中直接加载图片资源。注意加载的路径与前面创建的资源路径是一致的。

//在头文件中定义
QPixmap bfIm,ztIm;
//在构造函数中直接加载
bfIm.load(":/images/images/bofang.png");
ztIm.load(":/images/images/zanting.png");

2)设置按钮图标

此处为UI对象中的pushButton_start按钮设置图标,代码实现如下。该段代码可在构造函数中实现,按钮默认显示为播放图标,也可在其他需要的地方实现。该段代码首先限制了图标的大小,然后调用按钮的setIcon函数设置图标,并指定图标的大小,后面是一些点击效果的设置。

pushButton_start按钮控件的大小建议设置为与此处图片的大小一致(30,30),否则会影响显示效果。

    bfIm = bfIm.scaled(30,30,Qt::KeepAspectRatio, Qt::SmoothTransformation);
    ztIm = ztIm.scaled(30,30,Qt::KeepAspectRatio, Qt::SmoothTransformation);
    ui->pushButton_start->setIcon(QIcon(bfIm));//
    ui->pushButton_start->setIconSize(QSize(30,30));
    ui->pushButton_start->setFlat(true);//实现按钮透明
    ui->pushButton_start->setStyleSheet("border: 0px");//消除边框,取消点击效果

3)图标切换

当点击按钮时,切换显示的图标,在pushButton_start按钮的clicked()槽函数中添加如下代码实现。

void OrbitSimulate::on_pushButton_start_clicked()
{
    static bool start = false;
    if(start == false)
    {
        ui->pushButton_start->setIcon(QIcon(ztIm));
        ui->pushButton_start->setIconSize(QSize(30,30));
        ui->pushButton_start->setFlat(true);
        ui->pushButton_start->setStyleSheet("border: 0px");
        start = true;
    }
    else
    {
        ui->pushButton_start->setIcon(QIcon(bfIm));
        ui->pushButton_start->setIconSize(QSize(30,30));
        ui->pushButton_start->setFlat(true);
        ui->pushButton_start->setStyleSheet("border: 0px");
        start = false;
    }
}

4)实际效果

播放按钮实际演示效果如下。

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="GymvfvHX-1736391870301" src="https://live.csdn.net/v/embed/442625"></iframe>

播放按钮效果演示

四、总结

本文提供了一种实现播放按钮的简单方法,过程实现代码是嵌入在UI工程中的,不是完全独立的。但利用该方法也可以通过继承QPushButton类来实现一个完全独立的自定义播放按钮控件。在项目中将所需要的图片添加到资源文件中是十分必要的,这样在编译过程中相关的图片资源会被一起打包,利于程序的发布运行。

标签:控件,QT,自定义,pushButton,30,start,ui,按钮,资源
From: https://blog.csdn.net/weixin_44232317/article/details/145023027

相关文章

  • 23. 对话框控件
    一、对话框应用  对话框窗口是一个用来完成简单任务或者和用户进行临时交互的顶层窗口,通常用于输入信息、确认信息或者提示信息。QDialog类是所有对话框窗口类的基类。  按照运行时是否可以和其他窗口进行交互操作,对话框分为模式(或模态)对话框和非模式对话框。对于带有模式......
  • 搭建基于VS的PyQt6软件开发环境
    注:蓝色字体为超链接,点击即可下载对应软件一、下载Python下载Python安装包。打开安装包,点击Customizeinstallation安装Python(安装过Python的可点击UpgradeNow升级Python)。之后点击next和Install即可。二、安装第三方库打开命令提示符。将代码黏贴至命令提示符中,......
  • 最新版Firefox浏览器加载ActiveX控件之SolidWorks 3D控件
     背景   SolidWorks ComposerPlayer是一个免费应用程序,它允许内容创作者将Composer内容分发给任何最终用户。ComposerPlayer与Composer一样具有高性能。ComposerPlayer绝不仅仅是一个简单的查看器,内容使用者可以在产品可交付内容中获得深入的互动体验。 ......
  • 【Django】自定义中间件的注册和使用,利用反射规范代码
    在Django中创建和使用自定义中间件1.创建自定义中间件在你的Django应用目录下创建一个新的文件,通常命名为middleware.py。在这个文件中,你可以定义自己的中间件类。示例中间件#middleware.pyclassCustomMiddleware:def__init__(self,get_response):......
  • AI磁力聚星提现生成器小游戏提现截图带动态带音效辅助的自定义提现截图生成工具技术研
    AI辅助的自定义提现截图生成工具技术文献本文介绍了一种基于人工智能技术的自定义提现截图生成工具,该工具旨在为用户提供一种便捷、高效的方式来生成磁力小游戏提现截图。通过该工具,用户可以自定义截图内容,包括金额、时间等关键信息,并支持录屏功能,以满足用户在社交媒体分享时......
  • 请说说在Angular中哪些类型的组件可以创建自定义指令?
    在Angular中,可以创建自定义指令的组件类型主要包括以下几种:模板指令(组件):模板指令实际上就是组件,它们是Angular中非常核心的部分。每个Angular组件都是一个自定义的模板指令,它定义了视图的HTML结构以及与之关联的逻辑。通过@Component装饰器,我们可以创建并配置一个组件,其中包括......
  • win32汇编环境,对话框程序中对按钮控件常用操作的示例
    ;运行效果;win32汇编环境,对话框程序中对按钮控件常用操作的示例;常用的操作,例如创建按钮控件,使其无效,改变文本,得到文本等。;将代码复制进radasm软件里,直接就可以编译运行。重点部分加备注。;以下为asm文件。;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>&......
  • 如何从 Keycloak 的 keycloak-themes.jar 中提取原生主题并自定义设置
    言简意赅的讲解keycloak-themes.jar解决的痛点在部署和自定义Keycloak主题时你可能遇到了没有原生主题代码的难点,后续在Keycloak官方项目中获取原生主题文件还是无法找到主题源码。下面这篇文章将向你展示,在某些Keycloak发行版本或特定部署方式下,如果默认的/opt/keyc......
  • 自定义录制,解锁全部功能!
    屏幕录制在各个领域都有着广泛的应用,不仅能够有效记录重要信息,还能帮助用户回顾和分析过去的活动,无论是工作会议、在线课程还是游戏过程。通过录屏软件,用户可以轻松捕捉屏幕上的动态内容,生成视频文件,以便于后续查看和分享;分享一款专业的屏幕录制软件:ApowerREC(傲软录屏);......
  • OpenCV基础:TrackBar控件实战
    在OpenCV中,createTrackbar和getTrackbarPos是用于创建和获取滑动条(Trackbar)控件的函数,常用于图像处理或调参界面的交互式应用。通过滑动条,用户可以动态调整参数(如图像处理中的阈值、滤波器强度等),并实时查看效果。 createTrackbar作用:在窗口中创建一个滑动条,允许用户通......