QPushButton取消按压后文字下沉效果

1、下沉原因

1.1、QPushButton源码

void QPushButton::initStyleOption(QStyleOptionButton *option) const
{
    if (d->down || d->menuOpen)
        option->state |= QStyle::State_Sunken;
    if (d->checked)
        option->state |= QStyle::State_On;
}

  当按下和选中后

    option->state 会有 QStyle::State_Sunken 或者 QStyle::State_On 标记

1.2、QCommonStyle 源码

void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt,
                               QPainter *p, const QWidget *widget) const
{
    Q_D(const QCommonStyle);
    switch (element) {
case CE_PushButtonLabel:
        if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(opt)) {

            if (button->state & (State_On | State_Sunken))
                textRect.translate(proxy()->pixelMetric(PM_ButtonShiftHorizontal, opt, widget),
                             proxy()->pixelMetric(PM_ButtonShiftVertical, opt, widget));

            proxy()->drawItemText(p, textRect, tf, button->palette, (button->state & State_Enabled),
                         button->text, QPalette::ButtonText);
        }
        break;
    }

}

  当 option->state 含有 QStyle::State_Sunken 或者 QStyle::State_On 标记时 会改变文本位置

2、解决办法

 2.1、设置样式代理

  proxy()->pixelMetric(PM_ButtonShiftHorizontal, opt, widget)
  proxy()->pixelMetric(PM_ButtonShiftVertical, opt, widget)
  获取偏移时return 0;
				
时间: 2024-10-23 13:35:06

QPushButton取消按压后文字下沉效果的相关文章

android:TextView实现文字走马灯效果(欺骗系统获取持久的焦点)

通常情况下我们想实现文字的走马灯效果需要在xml文件中这样设置 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" android:ellipsize="marquee" android:focusable="true" android:

javascript超过容器后显示省略号效果(兼容一行或者多行)

javascript超过容器后显示省略号效果 在实际的项目中,由于文字内容的长度不确定性和页面布局的固定性,难免会出现文字内容超过div(或其他标签,下同)区域的情况,此时比较好的做法就是当文字超过限定的div宽度后自动以省略号(…)显示,这样,按照习惯,人们都会知道这儿有文字被省略了.css中有个属性叫做text-overflow:ellipsis;比如使用css可以这样写: {width:27em; white-space:nowrap; text-overflow:ellipsis; -o

仿知乎/途家导航栏渐变文字动画效果-b

demo.gif 效果图如上,简单分析下 1.导航栏一开始是隐藏的,随着scrollView滚动而渐变 2.导航栏左右两边的navigationItem是一直显示的 3.导航栏参考了途家app,使用了毛玻璃效果,背景是一张图片 4.下拉放大图片效果 5.title文字动画效果 通过简单分析,系统的导航栏实现以上效果有点困难,直接自定义一个假的导航栏更容易点 分布拆解实现以上效果 一.下拉放大header图片 - (void)viewDidLoad {        [super viewDidL

C#利用GDI+绘制旋转文字等效果实例

本文实例讲述了C#利用GDI+绘制旋转文字等效果的方法,是非常实用的技巧.分享给大家供大家参考之用.具体如下: C#中利用GDI+绘制旋转文本的文字,网上有很多资料,基本都使用矩阵旋转的方式实现.但基本都只提及按点旋转,若要实现在矩形范围内旋转文本,资料较少.经过琢磨,可以将矩形内旋转转化为按点旋转,不过需要经过不少的计算过程.利用下面的类可以实现该功能. 具体实现代码如下: using System; using System.Collections.Generic; using System

嵌入式图片下沉效果

本文实现嵌入式图片下沉效果,先上几张效果图: css代码如下: #firstWord{ padding:0 10px 0 374px;background: url("images/validateBtn.png") no-repeat top left white;background-size:374px 105px; color: red;font-size: 84px;font-weight: bold;white-space:nowrap; position: relativ

向上滑动的文字提示效果探索

最近有一个需求,是让我把一个效果优化一下.这个效果是页面加载完后,会有一个向上滑动的文字提示动画效果,如下图 注:下面的例子我都会附上完整demo,以供有需要的小伙伴测试和借鉴    之前是后台同事用 JS 实现的,代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initi

源码时代前端干货分享| AE如何实现文字消散效果?看这一篇就够了!

源码时代前端干货分享| AE如何实现文字消散效果?看这一篇就够了!首先:1.新建合成IMAge012.新建一个纯色层做背景(如果自带背景可以忽略)02 3.新建文本图层034.打上文字,调整文字大小,让文字在画布中居中04 然后:5.给文字添加一个蒙版05 6.在0秒的位置的蒙版路径打上关键帧067.0秒的时候蒙版路径最大,3秒的时候蒙版路径最小078.继续添加蒙版羽化089.再新建一个合成为置换0910.新建一个纯色的白图层1011.给它添加一个蒙版1112.在蒙版路径上打上关键帧13.0秒的

鼠标悬浮于链接之上出现文字说明效果

鼠标悬浮于链接之上出现文字说明效果:对于超链接<a>标签,有一个title属性,当鼠标表悬浮于链接之上时候,就会显示title的属性值,虽然在一定程度上满足了我们的需要,但是美观度却似差强人意,同时无法修改它的样式,下面就来介绍一下如何利用jquery模拟实现此功能.代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="a

图像处理之简单数字水印 - 文字轧花效果

http://blog.csdn.net/jia20003/article/details/7338614 图像处理之文字轧花效果- 简单数字水印 @ gloomyfish 首先看一下效果,左边是一张黑白的文字图像,右边是混合之后的数字水印效果 实现原理 主要是利用位图块迁移算法,首先提取文字骨架,宽度为一个像素.然后将提取的骨架,按 照一定的像素值填充到目标图像中即可.关于位图块迁移算法说明请看这里: http://en.wikipedia.org/wiki/Bit_blit 程序思路: 1.