Ich versuche derzeit, eine QML/C++ - Anwendung für Android zu schreiben. Irgendwo in meinem Code, habe ich eine Klasse, die wie folgt aussieht:Wie funktioniert die QML TextField-Bindung unter Android?
class MyClass : public QObject
{
Q_OBJECT
Q_PROPERTY(QString prop READ prop WRITE setProp NOTIFY propChanged)
public:
explicit MyClass(QObject* a_Parent = 0);
QString prop() const
{
return m_Prop;
}
void setProp(const QString& a_Value)
{
m_Prop = a_Value;
emit propChanged();
}
signals:
void propChanged();
private:
QString m_Prop;
};
Somwhere in meiner QML Sache, ich habe einen Artikel in der folgenden Weise definiert:
ColumnLayout {
TextField {
id: myField
placeholderText: qsTr("Enter text")
Layout.fillWidth: true
Binding {
target: myClass
property: "prop"
value: myField.text
}
}
Natürlich, ich habe alles notwendig, um das Objekt myClass vom Typ MyClass zwischen C++ und QML (als Context-Eigenschaft) zu machen.
Jetzt ist das Problem das Folgende: was auch immer ich im obigen Textfeld unter Android eingeben, wird das letzte Wort nie von MyField.text zu MyClass.m_Prop kommuniziert. Wenn ich beispielsweise den Text "Ich bin mit diesem TextFeld nicht zufrieden" im TextField eintippte, enthält myClass.m_Prop "Ich bin nicht zufrieden damit". Wenn ich jedoch "Ich bin nicht zufrieden mit diesem TextField" (beachten Sie das Leerzeichen) eingeben und dann das letzte Leerzeichen entfernen, wird die gewünschte Zeichenfolge in der Variable m_Prop gespeichert.
Seltsam ist, dass das unter Linux einwandfrei funktioniert. Kann mir jemand sagen, was ich hier vermisse? Ich arbeite mit Qt 5.7 und Android 6.0.
Danke für Ihre Hilfe ...
Beachten Sie, dass auf dem Android-Emulator funktioniert das auch ganz gut. –
Der Grund ist, dass der Text auf Android noch nicht festgeschrieben ist, siehe ['QInputMethod'] (http://doc.qt.io/qt-5/qinputmethod.html) für weitere Informationen, insbesondere [' commit'] (http://doc.qt.io/qt-5/qinputmethod.html#commit). – m7913d
Versuchen Sie 'displayText' anstelle von' text' zu verwenden. Ersteres enthält partielle Texteingabe von einer Eingabemethode. – jpnurmi