Алдыңғы мақалада мәтін өрісіндегі мәтінді өзгертуге жауапты екі түйме жасалды. Ал енді консольде түймелерді басу туралы ақпаратты көрсету немесе қалқымалы хабарды көрсету қажет болған кезде опцияны қарастырайық. Яғни, өткен сабақты түрлендіреміз.
Шын мәнінде, бұл кодта іс жүзінде ешқандай қосымша айырмашылықтар болмайтын сәт болады. Екі жағдайда да осы функциялардың барлығына жауап беретін сәйкес сыныптар/түрлер бар.
Консоль шығысы
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 теңшеу оңайырақ.