Qml SwipeView';s密钥处理程序抢占子级的密钥处理程序
我正在使用QtQuick.Controls 2.0Qml SwipeView';s密钥处理程序抢占子级的密钥处理程序,qml,qtquickcontrols2,Qml,Qtquickcontrols2,我正在使用QtQuick.Controls 2.0TabBar来控制SwipeView。默认情况下,TabBar和SwipeView响应左右箭头键,使用我假设的onPressed处理程序 据我所知,这些默认的密钥处理程序是没有文档记录的 我需要在我的UI中有一个特定的元素来获取所有四个箭头键的事件,当且仅当它有活动焦点时。当前,它通过onReleased处理程序执行此操作,但每当祖先SwipeView响应键时,子元素都不会收到预期的onReleased键事件 我不反对SwipeView的默认行为
TabBar
来控制SwipeView
。默认情况下,TabBar
和SwipeView
响应左右箭头键,使用我假设的onPressed
处理程序
据我所知,这些默认的密钥处理程序是没有文档记录的
我需要在我的UI中有一个特定的元素来获取所有四个箭头键的事件,当且仅当它有活动焦点时。当前,它通过onReleased
处理程序执行此操作,但每当祖先SwipeView
响应键时,子元素都不会收到预期的onReleased
键事件
我不反对SwipeView的默认行为,但我希望我的行为优先。如何操作?将
onReleased
处理程序更改为onPressed
。如果有一个很好的理由让该处理程序被onReleased
而不是更常用的onPressed
,那么它就不再明显了。将onReleased
处理程序更改为onPressed
。如果有一个很好的理由让该处理程序在按下时被释放,而不是更常用的按下时,那么它就不再明显了。TabBar和SwipeView都没有任何快捷方式。它们不会从其他项或控件中过滤或窃取关键事件。它们只处理聚焦时接收的关键事件,或从子级传播的未经处理的关键事件。如果您的UI元素处理关键事件,并且您不希望它们进一步传播到父级,请确保接受关键事件。还请注意,许多内置控件,如按钮和滑块,默认情况下具有“强”焦点策略,这意味着它们在单击时获得焦点。@jpnurmi我想我已经向自己表明,响应关键事件的不是SwipeView
,因此它一定是选项卡栏。但当我试图用一个例子来回答你们的问题时,我发现我欺骗了自己。TabBar和SwipeView都没有捷径。它们不会从其他项或控件中过滤或窃取关键事件。它们只处理聚焦时接收的关键事件,或从子级传播的未经处理的关键事件。如果您的UI元素处理关键事件,并且您不希望它们进一步传播到父级,请确保接受关键事件。还请注意,许多内置控件,如按钮和滑块,默认情况下具有“强”焦点策略,这意味着它们在单击时获得焦点。@jpnurmi我想我已经向自己表明,响应关键事件的不是SwipeView
,因此它一定是选项卡栏。但当我试图用一个例子来回答你们的问题时,我发现我愚弄了自己。