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;



  • 相关阅读:
    elementUI table中的button 操作
    数组
    数组,字符串,数字之间的相互转换
    Element upload
    Vue中涉及到的三目运算与v-if结合
    ElementUI的input用法
    javascript的正则表达式
    Vue表单+Vue全局指令 v-focus 的引用
    ztree 异步加载大数据(一)
    vue mixins 混入项目实例
  • 原文地址:https://www.cnblogs.com/qintangtao/p/6972620.html
Copyright © 2011-2022 走看看