00 Qt中控件QPushButton讲解

2023-05-16

转载自https://zhuanlan.zhihu.com/p/440257095

前提

按钮分为了四种状态:常态、聚焦、按下、禁用

功能

1:背景颜色值改变

我们可以对四种状态设置一个背景颜色值,也可以根据不同状态设置不同的颜色值。

主要是根据我们实际的开发需求来定的。

情况1:四种状态使用一种背景颜色值

QSS方式:

Background-color:#FF0000;

情况2:每个状态的颜色值不一样

QSS方式

QPushButton{background-color:#FF0000}; //常态
QPushButton:hover{background-color:#00FF00}; //聚焦状态
QPushButton:pressed{background-color:#0000FF}; //按下状态
QPushButton:disabled{background-color:#DDDDDD}; //禁用状态

2:背景图片改变

与上述颜色值更改的方式一致,只是将颜色值变成了图片。

情况1:四态使用一种背景图片

QSS方式

border-image:url(:/QtControl/img/normal.png);

情况2:每个状态的背景图不一致

QSS方式

"QPushButton{border-image:url(:/QtControl/img/normal.png); }"
"QPushButton:hover{border-image:url(:/QtControl/img/hover.png);}"
"QPushButton:pressed{border-image:url(:/QtControl/img/pre.png);}"
"QPushButton:disabled{border-image:url(:/QtControl/img/disab.png);}";

3:文本对齐方式

QPushButton这个控件的对齐方式有点不一样哦~是不可以使用"setAlignment"这个函数进行设置的,只能通"过setStyleSheet"进行QSS风格设置,这一点大家需要记住啦~

按钮中字体的对齐方式:left、right、top、bottom、center

  • 左对齐

QSS:text-align:left;

  • 右对齐

QSS:text-align:right;

  • 居中

QSS:text-align:center;

  • 内边距对齐

情况1:文本左对齐时,内边距设置

QSS:padding-left:10px;

情况2:文本右对齐时,内边距设置

QSS:padding-right:10px;

4:内部显示图片

图片在右侧显示

显示效果,以文本右侧显示图片为例子,如下所示:

QSS方式

QString strStyle = "QPushButton{font-family:Microsoft YaHei; font-size:12px; color:#666666;} "
"QPushButton{background-image:url(:/QtControl/image/2wm_p.png);"
"background-repeat:repeat-no-repeat;" //图片重复方式
	"background-position:right;"
	"background-origin:content;"
	"padding-right:15px;}";

说明:

1:在图片时,为什么使用background-image与2.2中的方式为何不一致?

因为border-image设置背景时,图片是拉伸填充的,在此处不需要。

2:background-repeat说明

该属性定义了图像的平铺模式。背景图像的位置是根据background-position属性设置的。如果未规定background-position属性,图像会被放置在元素的左上角。

描述
repeat默认。背景图像将在垂直方向和水平方向重复
repeat-x背景图像将在水平方向重复。
repeat-y背景图像将在垂直方向重复。
no-repeat背景图像将仅显示一次。
inherit规定应该从父元素继承属性的设置。

3:background-position说明

位置关键字可以按任何顺序出现,只要保证不超过两个关键词。

如果只出现一个关键字,则认为另一个关键字是center。

单一关键字等价的关键字
centercenter center
toptop center 或 center top
bottomBottom center 或 center bottom
rightright center 或 center right
leftleft center 或 center left

4:background-origin 说明

相对于内容框来定位背景图像。

属性值:border(边框)

padding(填充)

context(内容)

图片在顶部显示

QSS方式

QString strStyle = "QPushButton{font-family:Microsoft YaHei; font-size:12px; color:#666666;text-align:bottom;} "
"QPushButton{background-image:url(:/QtControl/image/2wm_p.png);"
"background-repeat:no-repeat;" 
	"background-position:top;"
	"background-origin:content;"
	"padding:10px}";

图片左侧显示

当图片在左侧时,相当于按钮的图标,则使用下面这种方式实现。

ui.btn->setIcon(QIcon(:/QtControl/image/2wm_p.png));

5:文本底部添加下划线

对于这个功能,很多情况下都会用到,前一阵子我也使用到了这个功能,索性分享给大家吧~

首先先看一下展示效果

下划线的长度是整个QPushButton的长度。

QSS的选中效果

sStyle = "QPushButton{ font-size:14px; font-family:Microsoft YaHei UI;color:#1576fc;background: transparent;border-width:2px;border-style:none none solid none;border-color:#1576fc;}";

QSS的未选中效果

sStyle = "QPushButton{ font-size:14px; font-family:Microsoft YaHei UI;color:#999999;background: transparent;border-width:2px;border-style:none none solid none;border-color:#cccccc;}";


总结

目前想到的功能也就这些啦~

如果还有想要实现却没法实现的功能,评论下说明我会更新的哦~

看在我这么辛苦总结的份上,点个赞再走吧~

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

00 Qt中控件QPushButton讲解 的相关文章

  • QT控件样式系列(二)之QPushButton/QToolButton

    系列文章目录 QT控件样式系列 xff08 一 xff09 之QSlider 文章目录 系列文章目录前言一 样式表二 相关应用1 场景一2 场景二3 场景三 前言 本篇主要讲解 QPushButton 和 QToolButton 的样式和使
  • QT 设置QPushButton 颜色

    调色板类QPalette QPalette类包含了 Qt窗口不见的颜色组 collor group 1 Active组 该组的颜色用户当前活动的 active 窗口 即具有键盘或鼠标焦点的窗口 2 Inactive组 该组用语其他的窗口 3
  • 00 Qt中控件QPushButton讲解

    转载自https zhuanlan zhihu com p 440257095 前提 按钮分为了四种状态 xff1a 常态 聚焦 按下 禁用 功能 1 xff1a 背景颜色值改变 我们可以对四种状态设置一个背景颜色值 xff0c 也可以根据
  • QT QPushButton中设置样式出现异常凹凸的问题

    一 设计图 两个互斥的button xff0c 然后我只想设置下边框的颜色 二 设置样式后出现凸起 xff08 太丑了 xff09 QPushButton btnMember span class token punctuation spa
  • QT类学习系列(8)- QPushButton,QToolButton的区别

    QPushButton与QToolButton的区别 weixin 42073232的博客 CSDN博客https blog csdn net weixin 42073232 article details 84848142 QToolBu
  • QPushButton的简单使用

    Qt的基本控件接口 QPushButton的简单使用 Dialog Dialog QWidget parent QDialog parent ui new Ui Dialog ui gt setupUi this QPushButton b
  • QT QPushButton点击事件的实现

    最近需要对按钮实现效果 当鼠标按下时按钮有效果1 然后鼠标松开时按钮有效果2 分析 这里没有现成的信号可以使用 需要重载mousePressEvent 及 mouseReleaseEvent 事件函数 在mouseReleaseEvent
  • Pyside6 TableView 显示按钮 - QStyledItemDelegate 简单实现

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 目录 示例代码 效果图 参考链接 示例代码 coding utf 8 import sys from PySide6 QtCore import from PySide6 Q
  • Python PyQt5(三)添加控件,绑定简单事件处理函数

    coding utf 8 Author BlueSand Email slxxfl000 163 com Web www lzmath cn Blog https blog csdn net weixin 41810846 Date 201
  • (Qt) 从按钮的 QButtonGroup 创建信号?

    我对这整件事是如何运作的感到非常困惑 我有一些按钮 我将其放入这样的组中 MainWindow MainWindow QWidget parent QMainWindow parent ui new Ui MainWindow ui gt
  • 循环创建PyQt5按钮:所有按钮触发相同的回调

    我应该提到 我已经阅读了这些内容 但我仍然无法实现我的目标 在 for 循环中使用字典来创建按钮不起作用 循环中的 QtCore QObject connect 仅影响最后一个实例 我的目标是制作一个 Linux 启动器 应用程序 按钮的创
  • 通过信号的函数调用将默认键控参数更改为“False”。为什么?

    当通过信号连接调用函数时 如下所示 mybutton clicked connect myfunction 调用该函数时 其所有参数均设置为 False 即使已设置默认参数 这是预期的行为吗 下面的代码显示了一个简单的示例 对于我的特殊情况
  • 单击菜单标题时连接函数

    我正在尝试找到开放的端口并将它们添加到我的菜单中 现在 我成功地对菜单执行了一个操作 例如 查找端口 并且只有单击它时 它才会连接到获取所有可用端口的函数 不幸的是 这不是我想要的 我想点击菜单title 并获取我的菜单中的所有端口 下面是
  • 在 QMenuBar 的另一侧堆叠 QPushButton

    我想堆一些QPushButton我另一边的物体QMenuBar This is how my window looks now And this is how I want it to look like I ve photoshopped
  • 设置 Qt QPushButton 弹出菜单的位置(向右)

    我正在为 Qt 按钮小部件编写弹出菜单 每当单击按钮时 就会弹出一个菜单 在按钮下方 默认情况下 弹出菜单位于下方左侧 有没有办法让弹出菜单在按钮下方的右侧弹出 没有设置位置的功能 所以我想知道是否有一些复杂的方法可以做到这一点 这是一些代
  • Qt keyPressEvent、“Hold”和 keyReleaseEvent 处理按钮/鼠标点击

    我正在编写一个 Qt 程序来模拟一个硬件 我想模拟按钮按下 按住和释放事件 在我的应用程序中 我想处理键盘和鼠标点击的输入 以使用户 即我 方便 我注意到一些奇怪的行为 但我不明白 该应用程序使用 QPushButtonautoRepeat
  • 如何防止回车键关闭我的 QDialog (Qt 4.8.1)

    我有一个QDialog with a QDialogButtonBox The OK and Cancel按钮处于活动状态 有时 我会根据对话框的状态禁用或隐藏 确定 按钮 看来 无论我做什么 Enter 键总是会激活 确定 按钮 我真的不
  • 具体QPushButton样式

    如何自定义 QPushButton 或 QToolButton 的外观 使其看起来像elementaryos 的网页 按钮 我真正想要的是特征图像位置和侧面的文字 也许如果我幸运的话我也可以得到这样的边框 但我真的不需要标题下面的小描述 我
  • PySide:如何在 QPushButton 单击槽中获取单击的 QPushButton 对象?

    我是 PySide 的新手 我想在其单击的插槽中获取 QPushButton 对象 例如使用它来获取其文本 button QtGui QPushButton start go button clicked connect self butt
  • PySide:QPushButton 按下后保持突出显示

    在我的工具中 当用户按下按钮时 会创建一个弹出窗口 我的问题是 用户按下打开窗口的按钮在弹出窗口创建时保持突出显示 就像我将鼠标悬停在它上面一样 并且即使在弹出窗口被删除后仍然保持这种状态 我实际上喜欢弹出窗口处于活动状态时的此突出显示 它

随机推荐

  • Dapper MySql DateTime 异常

    实体类 字段类型 DateTime xff0c Mysql数据库中字段类型 datetime NULL 使用dapper扩展读取 xff0c 报异常 xff1a Error Parse column Object 原因 xff1a Mysq
  • InfoWindow 和 InfoSymbol 的显示

    既可以为图层设置InfoWindow或InfoSymbol xff0c 也可以单独的设置每个要素Feature或Graphic 当设置为整个图层时 xff0c 是应用到整个FeatureLayer或GraphicLayer中的所有要素 一下
  • 【mmdet3d配置】win11+Debian子系统

    mmdet3d 43 win11 43 Debian子系统 不想安装双系统 xff0c 又馋windows的UI xff0c 还需要linux的生产力 xff0c 毕竟很多代码暂时只支持linux 所以就有了这篇文章 linux子系统 在
  • windows远程连接linux超时断开解决

    1 通过windows的cmd命令远程连接Linux服务器 2 通过指令进入sshd config文件 vim span class token operator span etc span class token operator spa
  • Unable to allocate 129792KB bitmaps for parallel garbage collection for the requested 4153344KB heap

    现象 xff1a Windows 11 执行 mvn spring boot run 出现如下错误 xff1a Unable to allocate 129792KB bitmaps for parallel garbage collect
  • Linux下进程号查看和pid查看端口号

    先使用 lsof i 得到正在运行的进程 xff0c 此时可以看到对应的 pid xff0c 再使用 netstat anp grep pid 就可以查到进程对应的端口 xff0c 还有一个更简单 直接的命令是 netstat ntlp x
  • wsl2打开terminal被卡住,无法进入terminal

    以管理员方式启动cmd xff0c 执行 netsh winsock reset
  • Vim跳转到指定行的三种方法

    vim中有3中方法可以跳转到指定行 xff08 首先按esc进入命令行模式 xff09 xff1a 1 ngg nG xff08 跳转到文件第n行 xff0c 无需回车 xff09 2 n xff08 跳转到文件第n行 xff0c 需要回车
  • docker-compose up --build -d 的作用

    docker compose up build d 根据Dockerfile重新下载需要的镜像并构建容器 xff0c 也就是说这句相当于是 docker compose build no cache 和 docker compose up
  • 使用cat和echo把多行内容写入到文件

    cat gt love txt gt i love you gt i love you so much gt i love you with all my heart gt EOF 注 xff1a 加EOF是为了退出编辑状态 参考这里 ca
  • Agile-bpm工作流

    前端 xff1a 后端 xff1a agile bpm basic Agile bpm basic的部署文档 xff0c 从项目的README md里得知 xff0c 有spring boot版本 xff1a spring boot 版本
  • 最新go语言学习教程

    go语言学习教程 集合了连接go routine go连接redis go连接kafka等示例 xff0c 所有代码均经过实践 xff0c 可以直接使用 GitHub fastbpmn go study go语言的个人学习项目
  • Java 基础实验 找出1000以内的完数

    文章目录 前言一 什么是完数 xff1f 二 实验步骤1 实现思路2 代码如下 总结 前言 通过Eclipse平台实现Java基础实验 一 什么是完数 xff1f 完全数 xff08 Perfect number xff09 xff0c 又
  • 简单介绍下VB中text的passwordChar属性

    在CSDN上献丑一回 xff0c 希望能帮助一些对初学习VB的朋友们 首先我们先来看一个例子 xff0c 我想这个问题就不难理解了 xff01 代码开始 Private Sub Command1 Click If Text2 Text lt
  • 郁闷的周二

    好不容易破天荒的起床早了一回 xff0c 本想趁早把网站的内容更新一遍的 xff0c 谁知道网站又无法正常访问了 xff01 极度郁闷之中 xff01
  • IOS表视图——用IB建

    import 34 ViewController h 34 64 interface ViewController 64 end 64 implementation ViewController void viewDidLoad super
  • 在RHEL7.4上安装ovirt4.2.7所需要的软件包列表

    通过实践在RHEL7 4上安装了oVirt engine和ovirt host xff0c 除了RHEL7 4的光盘yum源外 xff0c 保留了所有下载的rpm文件 列表如下 xff1a abrt 2 1 11 50 el7 centos
  • Debian中文输入法fcitx总结

    Linux下的中文输入法很多 xff0c 有 chinput scim 等 但抱着好用 xff0c 实用 xff0c 快速的原则 xff0c 我推荐使用 fcitx 在 Debian环境下 xff0c 安装非常方便 具体如下 xff1a d
  • tabbarcontroller的tabbar的显示与隐藏

    以导航为控制 项目中一般都会用到 TabBar 这个控件 xff0c 需求是 TabBar在主界面正常显示 xff0c 但Push到下一级界面时则需要隐藏 xff0c Pop回来的时候又需要显示 1 如下代码代码虽然能实现功能 xff0c
  • 00 Qt中控件QPushButton讲解

    转载自https zhuanlan zhihu com p 440257095 前提 按钮分为了四种状态 xff1a 常态 聚焦 按下 禁用 功能 1 xff1a 背景颜色值改变 我们可以对四种状态设置一个背景颜色值 xff0c 也可以根据