2

目前我正在尝试在 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 代码引起的消息。任何想法我如何才能获得焦点。这背后的想法是控制启动时哪个元素成为键盘系统。

金库林

4

2 回答 2

2

从 C++ 对象导出布尔属性,并将 qml 项中的焦点属性绑定到 C++ 对象上的属性。这样您就不会强迫您的 C++ 代码假设您的 UI 的任何内容。

于 2013-04-09T14:02:10.307 回答
1

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

于 2013-04-09T08:47:50.507 回答