Evgenii Legotckoi
Evgenii Legotckoi1. März 2018 02:58

Android. Java vs Qt QML - Tutorial 003. Konsolennachrichten und Toast-Popup-Nachrichten

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.

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
ИМ
Игорь Максимов5. Oktober 2024 07:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 11:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr8. Februar 2024 18:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
EVA
EVA25. Dezember 2023 10:30
Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 15:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken