写点什么

Qt|控件 QPushButton 讲解

  • 2022 年 9 月 22 日
    河北
  • 本文字数:1781 字

    阅读完需:约 6 分钟

Qt|控件QPushButton讲解

前提

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


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


有需要的或者是对控件风格不熟悉的赶紧收藏起来!以备不时之需~

功能

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 属性,图像会被放置在元素的左上角。

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}";
复制代码

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

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;}";
复制代码

总结


发布于: 刚刚阅读数: 4
用户头像

书山有路勤为径,学海无涯苦作舟 2022.07.01 加入

擅长语言:C++ 涉及语言:Python

评论

发布
暂无评论
Qt|控件QPushButton讲解_qt_中国好公民st_InfoQ写作社区