我正在尝试从嵌入式系统上的Linux(使用Yocto Project定制构建)下运行的应用程序中,通过USB摄像头获取按钮事件。目前,我正在使用Qt 5.6.3。我的问题是,当我从PC上通过SSH(通过Qt Creator和简单的shell)通过SSH运行代码时,下面显示的代码就像一个超级按钮一样工作,但是如果我直接在系统上运行同一程序却不使用SSH,则什么也没做当我单击相机上的按钮(实际上也没有键盘上的任何其他键)时,会发生这种情况。
在网上跟随一些示例之后,我使用了Keys.onPressed,然后过滤该事件以获得所需的行为。为了全局获取它,我将事件处理程序直接放在ApplicationWindow中的Item中。
ApplicationWindow {
Item {
focus: true
Keys.onPressed:{
console.log(event.key)
playSound.play() //I play a sound to be sure a button is clicked
if(camera.recording && event.key === 16777466) {
//do stuff for the right key here
}
}
}
//Other elements here
}
我认为这与系统上运行的X服务器有关。但是所有内容都是默认的,我真的不知道要在系统中查找什么以提示什么不起作用。任何建议我将不胜感激。
答案 0 :(得分:0)
您能证明设置项目的宽度和高度吗?
答案 1 :(得分:0)
也许是与Focus有关的问题。在onCompleted事件发生后强制焦点会怎样?
ApplicationWindow {
Item {
id: myItem
focus: true
Keys.onPressed:{
console.log(event.key)
playSound.play() //I play a sound to be sure a button is clicked
if(camera.recording && event.key === 16777466) {
//do stuff for the right key here
}
}
Component.onCompleted: {
myItem.forceActiveFocus()
}
}
Component.onCompleted: {
myItem.forceActiveFocus()
}
//Other elements here
}
答案 2 :(得分:0)
经过几个小时的搜索,结果发现X服务器的“活动窗口”确实存在问题,但是解决方案非常简单,我只需要添加requestActivate();即可。在我的主视图上是这样的:
name