目前我正在尝试在c ++中设置一个简单的QML矩形的键盘焦点。样本:
Rectangle {
Keys.onUpPressed: {
console.log( 'Key up was pressed');
}
}
如果控件具有焦点,我应该能够在日志中看到该消息。在c ++中,我找到了实例并尝试编写焦点属性:
if ( true == QQmlProperty::write( pInstance, "focus", newFocus ) ) {
qDebug() << "Set new focus successful";
} else {
qDebug() << "Set new focus failed";
}
所以属性写成功了。但是当我的控件具有键盘焦点时,我无法看到由我的QML代码引起的消息。我有什么想法可以得到关注。这背后的想法是控制启动时哪个元素成为键盘系统。
金克林答案 0 :(得分:1)
我找到了解决方案。我刚为我的项目调用了forceActiveFocus()。
金
答案 1 :(得分:1)
从C ++对象导出布尔属性,并将qml项目中的focus属性绑定到C ++对象上的属性。这样,您就不会强制您的C ++代码假设您的UI。