一个 QSplitter 并找到当前的小部件
Posted
技术标签:
【中文标题】一个 QSplitter 并找到当前的小部件【英文标题】:A QSplitter and finding the current widget 【发布时间】:2012-11-28 16:04:44 【问题描述】:我有一个 QSplitter,里面有四个 QTextEdit 小部件。我知道我可以使用 QObject::findChildren 来接收一个包含小部件内所有小部件的列表(在我的情况下是 QSplitter),但我不知道如何确定哪个是当前的?
【问题讨论】:
成为现在的人是什么意思?有焦点的QTextEdit? 是的,有焦点的那个。 不要认为 QSplitter 中有方法可以做到这一点,但也许 QApplication::focusWidget() 帮助:doc.qt.digia.com/qt/qapplication.html#focusWidget 实际上,Daniel Castro 的问题帮助了我,我尝试使用 hasFocus() 方法并且它有效。谢谢! [已解决] 考虑编写解决方案作为答案,以便其他有相同问题的人可以轻松看到 :) 【参考方案1】:正如 cmets 中所说,您正在寻找带有焦点的 QTextEdit,所以基本上有两个选项:
-
使用 QApplication::focusWidget() (http://doc.qt.digia.com/qt/qapplication.html#focusWidget)
循环遍历您的 QSplitter 的每个子节点并为每个子节点调用 hasFocus(),这样您就可以知道哪个子节点具有焦点(键盘焦点)
第一种方法的主要缺点是您无法确定(直接使用它)该小部件是否属于 QSplitter。第二种方法可能听起来有点效率低下,但如果您的 QSplitter 没有很多小部件,那么它会非常好。
正如 cmets (of the OP) 所指出的,您选择了第二种方法,我是在这里发布答案的人,因为 OP 没有足够的声誉来回答他的问题。
【讨论】:
以上是关于一个 QSplitter 并找到当前的小部件的主要内容,如果未能解决你的问题,请参考以下文章