我有一个带有QML的复杂GUI,但在某些情况下我失去了焦点,我不知道哪个对象有活动焦点。
是否有任何工具或方法可以搜索QML文件并找到重点对象?
答案 0 :(得分:12)
我使用此行来查看哪个项目具有活动焦点:
Window {
onActiveFocusItemChanged: print("activeFocusItem", activeFocusItem)
}
此代码通过打印出具有有效焦点的项目来响应Window
ApplicationWindow
属性的更改。来自Qt快速控制activeFocusItem
和1的Window
具有相同的属性,因为它们来自QT_LOGGING_RULES
。
要找出项目获得焦点的 ,您可以将qt.quick.focus = true
环境变量设置为Button
。这样可以记录Qt的内部焦点处理。尽管如此,输出可能有点棘手......
由于您正在使用Qt Quick Controls 2,因此值得注意的是,每个控件都有一个2属性,用于确定控件如何获得焦点。像Qt.StrongFocus
这样的控件的默认值为focusPolicy
,这意味着按钮在单击或标签后会获得焦点。如果您发现某个控件具有焦点且您不想要它,只需将其Qt.NoFocus
设置为focusPolicy: Qt.NoFocus
:
<section class="hero is-halfheight upload-descr" style = "height: 37em">
<div class="hero-body">
<div class="container">
<div class="clearfix"></div>
<hr class = "rm-descr-bar" style = "float: left;"></hr>
<div class="clearfix"></div>
<h1 class = "title">
Loren Ipsum
</h1>
<div class="content rm-has-medium-size">
<p class = "upload-descr-exp" aria-live = "polite" aria-atomic = "true">Lorem ipsum dolor sit amet, consectetur adipiscing<br />elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<br />Ut enim ad minim veniam, quis nostrud exercitation<br />ullamco laboris nisi ut aliquip ex ea<br />ea commodo consequat. Duis aute irure dolor.</p>
</div>
</div>
</div>
</section>