有时候我们需要通过键盘接收焦点,目的是通过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。