Qt:如何检测一个widget是否被选中?

Qt: how to detect whether a widget is selected?

我没有看到任何 signal/slot/function 可以告诉我一个小部件是否被鼠标选中? 有没有可能有这样一个函数告诉我当前QWidget是否被选中?我如何区分 "the current widget is selected" 和 "one of its child widget is selected?"

您可以使用 hasFocus() 功能检查对小部件的关注。 focus 属性 保存控件是否有键盘输入焦点。您还可以使用 QApplication::focusWidget() 获取具有焦点的应用程序的当前小部件。您可以获得指向焦点小部件的指针,例如:

QWidget * fw = qApp->focusWidget();

当焦点小部件改变时 QApplication::focusChanged(QWidget *old, QWidget *now) 信号是 emitted.You 可以将它连接到一个插槽,您可以在其中根据焦点变化做任何您喜欢的事情。