- 1. Konsolenausgabe
- 2. Popup-Meldungen
- 3. Fazit
Im vorherigen Artikel wurden zwei Schaltflächen erstellt, die für die Änderung des Textes im Textfeld zuständig waren. Betrachten wir nun die Option, wenn wir Informationen über Schaltflächenklicks in der Konsole anzeigen oder eine Popup-Meldung anzeigen müssen. Das heißt, wir ändern die vorherige Lektion.
Tatsächlich wird dies genau der Moment sein, in dem es praktisch keine zusätzlichen Unterschiede im Code geben wird. In beiden Fällen gibt es entsprechende Klassen/Typen, die für all diese Funktionalitäten verantwortlich sind.
Konsolenausgabe
Bei Java übernimmt dies die Log-Klasse, bei QML die den Web-Programmierern vertraute Konsolenfunktionalität.
Konsolenmeldungen haben unterschiedliche Schweregrade:
- ERROR
- WARNUNG
- NFO
- DEBUG
- AUSFÜHRLICH
Im Falle von Java sind dies die folgenden statischen Methoden der Log-Klasse:
- Protokoll.v()
- Protokoll.d()
- Log.i()
- Log.w()
- log.e()
Im Fall von Qt QML sind dies Konsolenmethoden:
- Konsole.log
- Konsole.debug
- Konsole.info
- Konsole.warn
- Konsolenfehler
Die Konsolenfunktionalität verwendet die C++-Methoden qCDebug, qCWarning usw. Das heißt, im Rahmen von QML werden diese aus JavaScript stammenden Funktionen in C++-Methoden übersetzt, die bereits dazu dienen, Informationen an die Konsole auszugeben.
Java
Für die Ausgabe an die Konsole in Java müssen Sie das entsprechende Paket mit der Log-Klasse in die Java-Datei importieren
import android.util.Log;
Und rufen Sie die notwendigen Methoden dieser Klasse auf
View.OnClickListener onClickListenerOkBtn = new View.OnClickListener() { @Override public void onClick(View v) { Log.d(TAG, "Button ОК"); // Вывод в консоль } };
QML
Um QML-Code an die Konsole auszugeben, müssen Sie nichts verbinden oder importieren. Sie müssen nur die erforderliche Funktion an der richtigen Stelle im Code aufrufen.
onClicked: { console.debug("Button Ok") }
Popup-Meldungen
Java für Android hat eine spezielle Klasse zum Aufrufen von Popup-Nachrichten namens Toast. Und das ist der einzige Grund, warum er dient. Während Sie in QML für diese Zwecke den ToolTip-Typ verwenden können, der auf die gleiche Weise wie der übliche Tooltip für Oberflächenelemente verwendet werden kann. QuickInfos können instanziiert und an verschiedene QML-Objekte angehängt werden, und viele QML-Grafikobjekte haben bereits ein QuickInfo-Objekt, Sie müssen nur sein Verhalten anpassen.
Aber in dieser Lektion werden wir versuchen, den Standard-Toast zu implementieren, der in Java Android vorhanden ist.
Dieser Toast in Java Android sah für mich so aus
Während Toast in QML so aussah
Das Verhalten und Aussehen dieser Popup-Meldungen ist ähnlich, und deshalb können wir uns jetzt den Programmcode ansehen.
Java
Für Java müssen Sie die Toast-Klasse importieren
import android.widget.Toast;
und rufen Sie im rechten Teil des Codes eine Popup-Nachricht auf
Toast.makeText(getApplicationContext(), "OK Button is pressed", Toast.LENGTH_LONG).show();
Es stellte sich ein wenig Code heraus, und in dieser Lektion gewinnt Java etwas in Bezug auf die Menge des geschriebenen Codes, weil wir in QML versuchen werden, das Erscheinungsbild und Verhalten von ToolTip QML näher an das Erscheinungsbild und Verhalten von Toast in Java zu bringen, und Dies erfordert bereits einige Anpassungen.
QML
Um den ToolTip-Typ zu verwenden, wird das Modul QtQuick.Controls 2 importiert
import QtQuick.Controls 2.3
Als Nächstes müssen Sie den ToolTip selbst zum Hauptanwendungsfenster hinzufügen, ihm eine ID zuweisen und ihn anpassen.
ApplicationWindow { visible: true width: 360 height: 520 title: qsTr("QML Buttons") ToolTip { id: toast delay: 500 timeout: 5000 x: (parent.width - width) / 2 y: (parent.height - 100) background: Rectangle { color: "gray" radius: 15 } } // Остальной код }
Und dann setzen Sie den Text darauf und setzen Sie die Eigenschaft visible auf true.
onClicked: { toast.text = qsTr("OK Button is pressed") toast.visible = true }
Fazit
Die Konsolenausgabe ist zwischen Java und Qt QML äquivalent.
Toast-Meldungen in Java Android übertrifft im Standardzustand Toast-Meldungen in Qt QML in Bezug auf die einfache Implementierung, aber vergessen wir nicht, dass QML ToolTip ein Tooltip ist, der eine erweiterte Funktionalität als Toast in Java hat. Beispielsweise kann ein ToolTip für ein Slider-Objekt verwendet werden und dem Slider folgen, was nicht von Toast bereitgestellt wird. Außerdem ist ToolTip einfacher anzupassen.