【问题标题】:A QSplitter and finding the current widget一个 QSplitter 并找到当前的小部件
【发布时间】: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() 方法并且它有效。谢谢! [已解决]
  • 考虑编写解决方案作为答案,以便其他有相同问题的人可以轻松看到 :)

标签: qt


【解决方案1】:

正如 cmets 中所说,您正在寻找带有焦点的 QTextEdit,所以基本上有两个选项:

  1. 使用 QApplication::focusWidget() (http://doc.qt.digia.com/qt/qapplication.html#focusWidget)
  2. 循环遍历您的 QSplitter 的每个子节点并为每个子节点调用 hasFocus(),这样您就可以知道哪个子节点具有焦点(键盘焦点)

第一种方法的主要缺点是您无法确定(直接使用它)该小部件是否属于 QSplitter。第二种方法可能听起来有点效率低下,但如果您的 QSplitter 没有很多小部件,那么它会非常好。

正如 cmets (of the OP) 所指出的,您选择了第二种方法,我是在这里发布答案的人,因为 OP 没有足够的声誉来回答他的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多