在Qt中如何知道当前关注哪个组件(放置在窗口小部件或窗体上)?

时间:2013-08-22 06:21:34

标签: qt

我在Qt上工作。我不是在使用android。它只是一个在windows / linux上运行的桌面应用程序。要知道当前关注哪个组件(放在窗口小部件或窗体上)?

我有屏幕键盘,当QLineEdit,QTextEdit或QPlainTextEdit聚焦并在这些失去焦点时隐藏时出现。但是当我将焦点从一个TextEdit(或lineEdit,PlainTextEdit)切换到另一个TextEdit(或lineEdit,PlainTextEdit)我的键盘时隐藏并再次显示。我只是想停止这个

1 个答案:

答案 0 :(得分:1)

如果你想要阻止键盘闪烁,当它来自它的小部件和它将要发生的那个相似时,你可以实现一个计时器。我想你丢失的焦点信号会转移到隐藏键盘的代码中。您可以启动像

这样的计时器,而不是真正隐藏它
QTimer::singleShot(500, this, SLOT(really_close_keyb()));

在该really_close_keyb()插槽中,您可以实现代码来检查当前具有焦点的窗口小部件是否应该具有键盘,如果它应该,那么您不应该隐藏它。

使用此功能后,如果用户从线条编辑中聚焦,键盘将会持续1/2秒,从而有足够的时间在不丢失键盘的情况下专注于另一个键盘。调整时机以适应。