Qt之mac上如何防止QTreeView接收焦点时显示默认蓝色边框

    有时候我们需要通过键盘接收焦点,目的是通过ctrl+a或者delete按键提供全选和删除的快捷方式。这时我们就需要设置QTreeView接收焦点:ui->treeView->setFocusPolicy(Qt::StrongFocus);

    但是,一旦接收焦点,在mac上QTreeView就会画一个蓝色的默认边框(真的很丑)。

    为解决这个问题:ui->treeView->setAttribute(Qt::WA_MacShowFocusRect, 0); 

    解析:

    void QWidget::setAttribute ( Qt::WidgetAttribute attribute, bool on = true )如果on为true,则在此小部件上设置attribute属性;否则为false。 否则清除属性。

    Qt::WA_MacShowFocusRect 指示此窗口小部件应带有一个QFocusFrame。 无论此属性如何,某些小部件都会绘制自己的焦点光晕。 并不是说QWidget :: focusPolicy在是否赋予焦点方面也起着主要作用,它仅控制是否获得焦点框。 此属性仅适用于Mac OSX。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值