如果QFrame的一个子部件获得焦点,我想要突出显示它(这样用户就知道光标所在的位置;-)
可以使用以下方法:
ui->frame->setFocusPolicy(Qt::StrongFocus);
ui->frame->setStyleSheet("QFrame:focus {background-color: #FFFFCC;}");
当我点击QFrame时,它会变得突出显示,但是一旦选择了其中一个子部件,它就失去了焦点。
可能的解决方法:
我可以
connect()
QApplication::focusChanged(old,now)
,并检查每个新对象是否是我的QFrame的子对象,但这会变得混乱。我还可以对每个子部件进行子类化,并重新实现
focusInEvent()
/focusOutEvent()
,然后对其做出反应,但对于很多不同的部件,这也是很多工作。
有更优雅的解决方案吗?
hookChildrenWidgetsFocus()
的想法。(但是我有点内疚,因为我从弗雷德那里拿走了他的认可,他之前提出了类似的方法。非常感谢你们两个!) - Elwood