C++ Qt:如何检测是否选择了小部件?
我没有看到任何信号/插槽/函数可以告诉我是否有一个小部件被鼠标选中?C++ Qt:如何检测是否选择了小部件?,c++,qt,widget,focus,selection,C++,Qt,Widget,Focus,Selection,我没有看到任何信号/插槽/函数可以告诉我是否有一个小部件被鼠标选中? 有没有可能有这样一个功能来告诉我是否选择了当前的QWidget?如何区分“选择了当前小部件”和“选择了其子小部件之一?”您可以使用hasFocus()函数检查小部件上的焦点focus属性保存小部件是否具有键盘输入焦点。您还可以使用QApplication::focusWidget()获取具有焦点的应用程序的当前小部件。您可以获得指向聚焦小部件的指针,如: QWidget * fw = qApp->focusWidget(
有没有可能有这样一个功能来告诉我是否选择了当前的QWidget?如何区分“选择了当前小部件”和“选择了其子小部件之一?”您可以使用
hasFocus()
函数检查小部件上的焦点focus
属性保存小部件是否具有键盘输入焦点。您还可以使用QApplication::focusWidget()
获取具有焦点的应用程序的当前小部件。您可以获得指向聚焦小部件的指针,如:
QWidget * fw = qApp->focusWidget();
当焦点部件更改时,会发出信号。您可以将其连接到一个插槽,在该插槽中根据焦点的更改做任何您想做的事情。常规
QWidged
支持选择吗?选择是指聚焦吗?@Nejat,也可以。我想要实现的是,当鼠标单击一个小部件时,它将某个值设置为1,当鼠标单击其他任何东西时,它将该值设置为0。我使用一个qtimer来检查hasFocus()在1Hz下对某些customWidget
的输出。无论我如何单击该customWidget
,输出总是false?你是说它总是返回false?你的小部件是什么类型的?嗨,我发现我需要先设置FocusPolicy,然后才能关注这个小部件。但是,当我单击其他任何地方(而不是小部件上)时,如何清除当前小部件的焦点呢?我必须手动操作吗,或者Qt有一些标志?