我有一个带有 QML 的复杂 GUI,但在某些情况下我丢失了 焦点我不知道哪个对象具有主动焦点。
是否有任何工具或方法可以在 QML 文件中搜索并找到焦点对象?
最佳答案
我使用这一行来查看哪个项目具有事件焦点:
Window {
onActiveFocusItemChanged: print("activeFocusItem", activeFocusItem)
}
此代码响应
activeFocusItem
中的更改Window
的属性(property)通过打印具有事件焦点的项目。 ApplicationWindow
来自 Qt 快速控制 1和 2具有相同的属性,因为它们源自 Window
.要了解项目如何获得焦点,您可以设置
QT_LOGGING_RULES
环境变量到 qt.quick.focus = true
.这为 Qt 的内部焦点处理启用日志记录。虽然输出可能有点棘手。由于您使用的是 Qt Quick Controls 2,因此值得注意的是每个控件都有一个
focusPolicy
确定控件如何获得焦点的属性。控件的默认值,如 Button
是 Qt.StrongFocus
,这意味着按钮在被单击或选项卡后获得焦点。如果你看到一个控件有焦点并且你不希望它有焦点,只需设置它的 focusPolicy
至 Qt.NoFocus
:focusPolicy: Qt.NoFocus
关于qt - QML 中有哪些对象具有 Active Focus?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47960622/