Evgenii Legotckoi
Evgenii LegotckoiНаурыз 1, 2018, 2:58 Т.Ж.

Android. Java vs Qt QML - Оқулық 003. Консольдық хабарлар және тост хабарлары

Алдыңғы мақалада мәтін өрісіндегі мәтінді өзгертуге жауапты екі түйме жасалды. Ал енді консольде түймелерді басу туралы ақпаратты көрсету немесе қалқымалы хабарды көрсету қажет болған кезде опцияны қарастырайық. Яғни, өткен сабақты түрлендіреміз.

Шын мәнінде, бұл кодта іс жүзінде ешқандай қосымша айырмашылықтар болмайтын сәт болады. Екі жағдайда да осы функциялардың барлығына жауап беретін сәйкес сыныптар/түрлер бар.

Консоль шығысы

Java жағдайында мұны Log класы жасайды, ал QML жағдайында бұл веб-бағдарламашыларға таныс консоль функционалдығы арқылы жүзеге асырылады.

Консольдік хабарлардың ауырлық деңгейі әртүрлі:

  • ҚАТЕ
  • ЕСКЕРТУ
  • NFO
  • ЖАЛДАУ
  • ТҰРАҚТЫ

Java жағдайында бұл Log класының келесі статикалық әдістері болады:

  • Log.v()
  • Log.d()
  • Log.i()
  • Log.w()
  • Log.e()

Qt QML жағдайында бұл консольдық әдістер болады:

  • console.log
  • console.debug
  • console.info
  • console.warn
  • console.error

Консоль функционалдығы qCDebug, qCWarning және т.б. C++ әдістерін пайдаланады. Яғни, QML шеңберінде JavaScript-тен келген бұл функциялар консольге ақпаратты шығаруға қызмет ететін C++ әдістеріне аударылады.

Java

Java-да консольге шығару үшін сізге Log класы бар сәйкес пакетті java файлына импорттау қажет.

import android.util.Log;

Және осы класстың қажетті әдістерін атаңыз

View.OnClickListener onClickListenerOkBtn = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Log.d(TAG, "Button ОК"); // Вывод в консоль
    }
};

QML

QML кодынан консольге шығару үшін ештеңені қосу немесе импорттау қажет емес. Сізге кодтың дұрыс жеріне қажетті функцияны шақыру жеткілікті.

onClicked: {
    console.debug("Button Ok")
}

Қалқымалы хабарлар

Android жүйесіне арналған Java бағдарламасында Toast деп аталатын қалқымалы хабарларды шақыруға арналған арнайы сынып бар. Бұл оның қызмет етуінің жалғыз себебі. Ал QML-де осы мақсаттар үшін интерфейс элементтеріне арналған кәдімгі құралдар кеңесі сияқты пайдалануға болатын ToolTip түрін пайдалануға болады. Құралдар кеңестерін әр түрлі QML нысандарына енгізуге және қосуға болады, және көптеген QML графикалық нысандарында Құрал кеңесі нысаны әлдеқашан бар, тек оның әрекетін теңшеу қажет.

Бірақ бұл сабақта біз Java Android жүйесінде бар стандартты Toast енгізуге тырысамыз.

Java Android жүйесіндегі бұл тост маған осылай көрінді

Ал QML-дегі тосттар осылай көрінді

Бұл қалқымалы хабарлардың мінез-құлқы мен сыртқы түрі ұқсас, сондықтан біз енді бағдарлама кодын қарай аламыз.

Java

Java үшін Toast класын импорттау керек

import android.widget.Toast;

және кодтың оң жағындағы қалқымалы хабарды шақырыңыз

Toast.makeText(getApplicationContext(), "OK Button is pressed", Toast.LENGTH_LONG).show();

Кішкентай код шықты және осы сабақта Java жазылған код саны бойынша біршама жеңеді, өйткені QML-де біз ToolTip QML-тің сыртқы түрі мен әрекетін Java-дағы Toast-тың көрінісі мен әрекетіне жақындатуға тырысамыз, және бұл әлдеқашан баптауды қажет етеді.

QML

Кеңес түрін пайдалану үшін QtQuick.Controls 2 модулі импортталады

import QtQuick.Controls 2.3

Әрі қарай, негізгі қолданба терезесіне Кеңестің өзін қосып, оған идентификатор беріп, оны теңшеу керек.

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
        }
    }

    // Остальной код
}

Содан кейін оған мәтінді орнатыңыз және көрінетін сипатты шын мәніне орнатыңыз.

onClicked: {
    toast.text = qsTr("OK Button is pressed")
    toast.visible = true
}

Қорытынды

Консоль шығысы Java және Qt QML арасында баламалы.

Java Android жүйесіндегі тост хабарлары әдепкі күйде Qt QML тіліндегі Toast хабарларынан орындалу қарапайымдылығы жағынан асып түседі, бірақ QML ToolTip — Java тіліндегі Toastқа қарағанда кеңейтілген функционалдығы бар құралдар кеңесі екенін ұмытпайық. Мысалы, Құрал кеңесін Slider нысанында қолдануға болады және Toast қамтамасыз етпейтін жүгірткіні орындаңыз. Сондай-ақ ToolTip теңшеу оңайырақ.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз
OI
  • Ora Iro
  • Жел. 24, 2024, 2:38 Т.Қ.

C++ - Тест 001. Первая программа и типы данных

  • Нәтиже:40ұпай,
  • Бағалау ұпайлары-8
AD

C++ - Тест 004. Указатели, Массивы и Циклы

  • Нәтиже:50ұпай,
  • Бағалау ұпайлары-4
m
  • molni99
  • Қаз. 26, 2024, 8:37 Т.Ж.

C++ - Тест 004. Указатели, Массивы и Циклы

  • Нәтиже:80ұпай,
  • Бағалау ұпайлары4
Соңғы пікірлер
ИМ
Игорь МаксимовҚар. 22, 2024, 7:51 Т.Қ.
Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii LegotckoiҚаз. 31, 2024, 9:37 Т.Қ.
Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZEҚаз. 19, 2024, 3:19 Т.Қ.
Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь МаксимовҚаз. 5, 2024, 2:51 Т.Қ.
Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas5Шілде 5, 2024, 6:02 Т.Қ.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Енді форумда талқылаңыз
Evgenii Legotckoi
Evgenii LegotckoiМаусым 24, 2024, 10:11 Т.Қ.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
t
tonypeachey1Қар. 15, 2024, 2:04 Т.Қ.
google domain [url=https://google.com/]domain[/url] domain [http://www.example.com link title]
NSProject
NSProjectМаусым 4, 2022, 10:49 Т.Ж.
Всё ещё разбираюсь с кешем. В следствии прочтения данной статьи. Я принял для себя решение сделать кеширование свойств менеджера модели LikeDislike. И так как установка evileg_core для меня не была возможна, ибо он писался…
9
9AnonimҚаз. 25, 2024, 4:10 Т.Қ.
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…

Бізді әлеуметтік желілерде бақылаңыз