zoukankan      html  css  js  c++  java
  • 去掉 Windows 中控件的虚线框(当当 element == QStyle::PE_FrameFocusRect 时,直接返回,不绘制虚线框)

    在 Windows 中,控件得到焦点的时候,会显示一个虚线框,很多时候觉得不好看,通过自定义 QProxyStyle 就可以把这个虚线框去掉。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    // 文件名: NoFocusRectStyle.h
     
    #ifndef NOFOCUSRECTSTYLE_H
    #define NOFOCUSRECTSTYLE_H
     
    #include <QProxyStyle>
     
    class NoFocusRectStyle : public QProxyStyle {
    public:
    NoFocusRectStyle(QStyle *baseStyle) : QProxyStyle(baseStyle) {}
     
    void drawPrimitive(PrimitiveElement element,
    const QStyleOption *option,
    QPainter *painter,
    const QWidget *widget = 0) const {
    if (element == QStyle::PE_FrameFocusRect) {
    return;
    }
     
    QProxyStyle::drawPrimitive(element, option, painter, widget);
    }
    };
     
    #endif // NOFOCUSRECTSTYLE_H

    当 element == QStyle::PE_FrameFocusRect 时,直接返回,不绘制虚线框。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    // 文件名: main.cpp
     
    #include "Widget.h"
    #include "NoFocusRectStyle.h"
    #include <QApplication>
     
    int main(int argc, char *argv[]) {
    QApplication app(argc, argv);
    NoFocusRectStyle *style = new NoFocusRectStyle(app.style());
    app.setStyle(style); // Ownership of the style object is transferred to QApplication
     
    Widget w;
    w.show();
     
    return app.exec();
    }

    在 main() 函数中调用 app.setStyle(style) 使用我们上面自定义的 NoFocusRectStyle 就可以把虚线框去掉了。

    http://www.qtdebug.com/qt-no-focus-rect/

  • 相关阅读:
    小三角 + 右箭头【纯css】
    小程序自定义弹窗【解决点透问题】
    分页存储过程
    SQL如何用一条语句批量修改表中不同数据
    Dapper批量更新
    vue中 $event 的用法--获取当前父元素,子元素,兄弟元素
    T-sql语句查询执行顺序
    Lucene入门
    Spring Boot入门
    SSM-Spring一些知识点
  • 原文地址:https://www.cnblogs.com/findumars/p/7360072.html
Copyright © 2011-2022 走看看