Qt|QPushButton控件讲解

前提

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

前一段时间更新了MFC框架下CButton的自绘。因为MFC框架下的按钮限制性很高,所以只能由自绘实现各种风格,但是QT框架完美的解决了这个问题,我们只需要了解如何调用,就可以展示炫酷的画面了,接下来我们来讲解下如何使用吧!

有需要的或者是对控件风格不熟悉的赶紧收藏

Background-color:#FF0000;

起来!以备不时之需~

功能

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;

右对齐:text-align:right;

居中:text-align:center;

内边距对齐:

        情况1:文本左对齐时,内边距设置。padding-left:10px;

        情况2:文本右对齐时,内边距设置。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属性,图像会被放置在元素的左上角。

3:background-position说明

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

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

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}";

图片左侧,QSS设置方式:

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

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;}";

总结

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

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

我是糯诺诺米团,一名C++开发程序媛~

相关推荐

  1. Android简单

    2024-01-31 01:20:01       31 阅读
  2. C# Chart

    2024-01-31 01:20:01       30 阅读
  3. Blendshape 表情

    2024-01-31 01:20:01       35 阅读
  4. WPF模板

    2024-01-31 01:20:01       18 阅读
  5. ASP.NET

    2024-01-31 01:20:01       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-31 01:20:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-31 01:20:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-31 01:20:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-31 01:20:01       20 阅读

热门阅读

  1. 【vue】前后端不在同一网络下,前端解决跨域

    2024-01-31 01:20:01       33 阅读
  2. python3-cookbook-查找两字典的相同点

    2024-01-31 01:20:01       40 阅读
  3. 738. 单调递增的数字 - 力扣(LeetCode)

    2024-01-31 01:20:01       29 阅读
  4. 达梦 hibernate连接主备集群

    2024-01-31 01:20:01       37 阅读
  5. 蓝桥杯练习-dfs算法飞机降落问题

    2024-01-31 01:20:01       35 阅读
  6. 「优选算法刷题」:只出现一次的数字Ⅲ

    2024-01-31 01:20:01       35 阅读
  7. 面试经典 150 题 -- 数组 / 字符串 (总结)

    2024-01-31 01:20:01       28 阅读
  8. Unity数据解析(Json、XML、CSV、二进制)

    2024-01-31 01:20:01       34 阅读
  9. NTP时间同步服务器@客户端时钟同步设置

    2024-01-31 01:20:01       30 阅读