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++ オブジェクトから boolean プロパティをエクスポートし、qml アイテムの focus プロパティを C++ オブジェクトのプロパティにバインドします。こうすることで、C++ コードに UI に関する想定を強制する必要がなくなります。

于 2013-04-09T14:02:10.307 に答える