从c ++中的QML-Rectangle请求键盘焦点

时间:2013-04-08 16:58:37

标签: c++ qt qml qt5

目前我正在尝试在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代码引起的消息。我有什么想法可以得到关注。这背后的想法是控制启动时哪个元素成为键盘系统。

金克林

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。我刚为我的项目调用了forceActiveFocus()。

答案 1 :(得分:1)

从C ++对象导出布尔属性,并将qml项目中的focus属性绑定到C ++对象上的属性。这样,您就不会强制您的C ++代码假设您的UI。