zoukankan      html  css  js  c++  java
  • 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;



  • 相关阅读:
    单播、广播和多播IP地址
    nagios安装部署及详细配置说明(转)
    centos6.5下cacti部署说明
    HAproxy配置详解
    mysql全量和增量备份详解(带脚本)
    lvs原理及安装部署详解(参考)
    curl命令的用法
    mysql日志解析
    MySQL查看和修改表的存储引擎
    mysql备份和还原
  • 原文地址:https://www.cnblogs.com/qintangtao/p/6972620.html
Copyright © 2011-2022 走看看