say*_*aee 8 qt focus qml qtquickcontrols2
我有一个复杂的图形用户界面与QML,但在某些情况下,我失去了我的焦点,我不知道什么对象有主动焦点.
是否有任何工具或方法可以搜索QML文件并找到重点对象?
Mit*_*tch 14
我使用这一行来查看哪个项目具有活动焦点:
Window {
onActiveFocusItemChanged: print("activeFocusItem", activeFocusItem)
}
Run Code Online (Sandbox Code Playgroud)
此代码通过打印具有活动焦点的项目来响应activeFocusItem属性的更改Window.ApplicationWindow来自Qt Quick Controls 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
Run Code Online (Sandbox Code Playgroud)