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 хостинг.

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

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз
Г

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

  • Нәтиже:66ұпай,
  • Бағалау ұпайлары-1
t

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

  • Нәтиже:33ұпай,
  • Бағалау ұпайлары-10
t

Qt - Тест 001. Сигналы и слоты

  • Нәтиже:52ұпай,
  • Бағалау ұпайлары-4
Соңғы пікірлер
G
GoattRockҚыр. 3, 2024, 1:50 Т.Қ.
Linux жүйесінде файлдарды қалай көшіруге болады Задумывались когда-нибудь о том, как мы привыкли доверять свои вещи службам грузоперевозок? Сейчас такие услуги стали неотъемлемой частью нашей жизни, особенно когда речь идет о переездах между …
d
dblas5Шілде 5, 2024, 11:02 Т.Ж.
QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssrАқп. 8, 2024, 6:43 Т.Қ.
Qt Linux - Сабақ 001. Linux астында Autorun Qt қолданбасы как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Анатолий КононенкоАқп. 5, 2024, 1:50 Т.Ж.
Qt WinAPI - Сабақ 007. Qt ішінде ICMP Ping арқылы жұмыс істеу Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Енді форумда талқылаңыз
Evgenii Legotckoi
Evgenii LegotckoiМаусым 24, 2024, 3:11 Т.Қ.
добавить qlineseries в функции Я тут. Работы оень много. Отправил его в бан.
F
FynjyШілде 22, 2024, 4:15 Т.Ж.
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …
BlinCT
BlinCTМаусым 25, 2024, 1 Т.Ж.
Нарисовать кривую в qml Всем привет. Имеется Лист листов с тосками, точки получаны интерполяцией Лагранжа. Вопрос, как этими точками нарисовать кривую? ChartView отпадает сразу, в qt6.7 появился новый элемент…
BlinCT
BlinCTМамыр 5, 2024, 5:46 Т.Ж.
Написать свой GraphsView Всем привет. В Qt есть давольно старый обьект дял работы с графиками ChartsView и есть в 6.7 новый но очень сырой и со слабым функционалом GraphsView. По этой причине я хочу написать х…
Evgenii Legotckoi
Evgenii LegotckoiМамыр 2, 2024, 2:07 Т.Қ.
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Добрый день. По моему мнению - да, но то, что будет касаться вызовов к функционалу Андроида, может создать огромные трудности.

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