QT之如何去除部件虚线框

QT之如何去除部件虚线框

开篇之叙

接着上篇QT之CheckBox单项选择与多项选择,再给大家讲讲,在我们控件上出现的虚线框,该如何去掉?有的朋友会问啦,可是我部件没出现你说的虚线框啊,这个虚线框在你按TAB键的时候,其实就会出现哦,不信你试试!

效果图

按下TAB键,虚线框是不是出现了呢,这样给人的感觉,是不是界面不太友好,没关系,我们去掉就是!
虚线

去掉虚线框效果图
这里写图片描述


在上代码之前我们先来看看Qt的Style风格


Qstyle 类

Qstyle 类将UI 的组成元素分为三类:

(1)Primitive Elements : 基本元素,如边框,倒角,箭头等一些基本的,被多个控件所复用的元素。基本元素本身不能单独存在。
(2)Control Elements : 控件元素,如按键,复选框等,不单是这些单独的控件,也包括复杂控件中的组成元素,如滚动条中的滑块。它和基本元素不同的地方是,它能够单独处理用户交互操作。
(3)Complex Control Elements : 复杂控件元素,复杂控件元素包含有子控件元素。例如combo boxes (复合选择框)等。它的用户交互响应,取决于用户操作的对象是哪个子控件。

其对应的有三个函数用于绘制这三类UI 元素。

(1)void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = 0) const Q_DECL_OVERRIDE;

(2)void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = 0) const Q_DECL_OVERRIDE;

(3)void drawComplexControl(ComplexControl control, const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget = 0) const Q_DECL_OVERRIDE;

具体的,可以查看QT的帮助文档。

上代码

今天我们这里用使用drawPrimitive函数去掉难看的虚线框

//去除虚线边框;
class CustomProxyStyle : public QProxyStyle
{
public:
    virtual void drawPrimitive(PrimitiveElement element, const QStyleOption * option,
        QPainter * painter, const QWidget * widget = 0) const
    {
        if (PE_FrameFocusRect == element)
        {
            //这里QT会绘制虚线框,而我们只需要在这里拦截掉就OK;
            return;
        }
        else
        {
            QProxyStyle::drawPrimitive(element, option, painter, widget);
        }
    }
};

结尾

只为记录,只为分享! 愿所写能对你有所帮助。Good Good Study, Day Day Up!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨田哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值