Vaqt va sana bilan bog’liq jarayonlarni dasturlash
1. Taymer, vaqt va sana bilan bog’liq jarayonlarni dasturlash.
QTime sinfi
Vaqtni boshqarish juda muhim vazifadir, shu bilan dasturdagi kechikishlarni hisoblash, ekranda joriy vaqtni ko'rsatish, fayllarni yaratish vaqtini tekshirish va h.k.Vaqt bilan ishlash uchun Qt kutubxonasi QTime sinfini taqdim etadi . Ob'ektlarda bo'lgani kabi, ob'ektlar paydo bo'lgan vaqtdan boshlab taqqoslash operatsiyasi ==, amalga oshirilishi mumkin ! =, <, <=,> yoki> =. Vaqt ob'ektlari vaqtni millisekundlik aniqlikda saqlashga qodir. Yilda konstruktor sinf QTime to'rt parametrlarini o'tdi. Birinchi parametr soat, ikkinchisi minut, uchinchisi soniya, to'rtinchisi milisaniyadir. Uchinchi va to'rtinchi parametrlarni o'tkazib yuborish mumkin, ular sukut bo'yicha nolga teng. Masalan; misol uchun:
QTime time (20, 4);
Ushbu qiymatlar setHMS () usuli yordamida vaqt ob'ekti yaratilgandan so'ng o'rnatilishi mumkin . Masalan; misol uchun:
QTime time;
time.setHMS (20, 4, 23, 3);
Vaqt ob'ektida o'rnatilgan soat, daqiqa, soniya va millisekundalarni olish uchun QTime sinfida quyidagi usullar aniqlangan:
hour () - 0 dan 23 gacha bo'lgan soatning ijobiy qiymatlarini qaytaradi;
daqiqa () - 0 dan 59 gacha bo'lgan daqiqalarni ifodalovchi butun son qiymatini qaytaradi;
second () - 0 dan 59 gacha bo'lgan soniyani ifodalovchi butun son qiymatini qaytaradi;
msec () - 0 dan 999 gacha bo'lgan millisekundlarni ifodalovchi butun sonni qaytaradi.
QTime klassi vaqt ob'ekti ma'lumotlarini mag'lubiyatga o'tkazish uchun toString () usulini taqdim etadi . Ushbu usulda parametr sifatida siz vaqt formatlaridan birini o'tkazishingiz yoki o'zingiz o'rnatishingiz mumkin. Masalan :
QTime vaqti ( 20, 4, 23, 3);
QString ko'chasi ;
str = time.toString (" hh: mm: ss.zzz "); // str = "20: 04: 23.003"
str = time.toString (" h: m: s ap "); // str = "8: 4: 23 pm"
Statik fromString () usuli yordamida siz mag'lubiyat turidan QTime turiga o'tkazishingiz mumkin . Buning uchun uslubning birinchi parametrida format qiymatlaridan biri o'tkazilishi kerak.
Mavjud ob'ektdan soniyalarni (yoki millisekundalarni) qo'shish yoki olib tashlash orqali o'zgartirilgan vaqt ob'ektini olishingiz mumkin. Ushbu qiymatlar addSecs () va addMSecs () usullariga o'tkaziladi.Hozirgi vaqtni olish uchun QTime sinfida statik currentTime () usuli mavjud .
Start () usuli yordamida siz vaqtni sanashni boshlashingiz mumkin va hisoblash boshlangandan beri qancha vaqt o'tganligini bilish uchun o'tgan () usulini chaqirishingiz kerak . Masalan, ushbu usullar asosida kichik profiler yaratishingiz mumkin.
Quyidagi misol test () funktsiyasining ishlash vaqtini hisoblab chiqadi :
QTime vaqti;
time.start ( );
test ( );
qDebug () << " test () funktsiyasining ishlash vaqti "
<< vaqt tugadi ()
<< "millisekundlar"
<< endl ;
QTime sinfining kamchiligi shundaki , u 24 soatlik interval bilan cheklangan, shundan keyin u noldan hisoblanadi. Ushbu muammoni hal qilish uchun siz QDateTime sinfidan foydalanishingiz mumkin .
QTimer klassi haqida Sinf QObject- dan meros qilib olingan , ya'ni u signallar va uyalar bilan ishlashi mumkin. Belgilangan vaqtdan keyin vaqt tugashi () signalini yuboradigan muntazam taymerlarni taqdim etadi . Bunday holda, sinf statik usuli singShot () ga ega, u ma'lum vaqtdan so'ng signalni faqat bir marta yuboradi. Taymer voqealari faqat voqealar davri ishlaganda amalga oshiriladi.
Foydalanish uchun, siz uchun kerak o'z ichiga oladi # ichiga oladi < QTimer >
O'z ichiga oladi , davlat vazifalarini:
int interval () - belgilangan taymer intervalining son ( int ) qiymatini millisekundlarda qaytaradi
int qolganTime () - Qolgan vaqtni millisekundlarda qaytaradi
bool isActive () - Taymer ishlayotgan bo'lsa, mantiqiy ( bool ) qiymatini haqiqiy qiymatga qaytaradi
bool isSingleShot () - taymer faqat bir marta yoqish uchun yoqilgan bo'lsa, true qiymatini qaytaradi
void setInterval ( int msec ) - taymer oralig'ini o'rnatishga imkon beradi , bu erda msec millisekundalarda vaqt
bekor setSingleShot ( bool singleShot )
void setTimerType ( Qt :: TimerType atype ) - taymer turini o'rnatadi
int timerId () - taymer identifikatorini qaytaradi
Qt :: TimerType timerType ( ) - Taymer turini qaytaradi
Tegishli ravishda taymerni ishga tushiradigan va to'xtatadigan start () va stop () uyalarini o'z ichiga oladi . Start () uyasi bitta ortiqcha yuklamaga ega - start ( int msec ), agar taymer ishlamay qolsa, taymerni msek millisekundadan keyin boshlaydi, aks holda taymer to'xtaydi va qaytadan boshlanadi.
Taymer tugashi bilan yuboriladigan vaqt tugashi () signaliga ega.
QTimer yordamida namuna
Misol tariqasida taymerdan foydalanishni ko'rib chiqamiz. Yuqorida aytib o'tilgan dasturni yarataylik. Bu joriy vaqtni ko'rsatadi va 5 soniyadan so'ng u yopiladi. Unda biz taymerning muntazam tetiklanishini qo'llaymiz, u har soniyada ekrandagi vaqtni yangilaydi. Shuningdek, biz bitta yong'in uchun statik funktsiyadan foydalanamiz singleShot (), bu dasturni yopish uchun signal beradi.
QDateTime sinfining ob'ektlari sana va vaqtni o'z ichiga oladi. Usuli chaqiruv sana (), siz sana ob'ekt olishingiz mumkin QDate va murojaat vaqti () vaqt obyekti qaytaradi QTime . Ushbu sinf ma'lumotlarning mag'lubiyat shaklida ifodalanishi uchun toString () usullarini ham o'z ichiga oladi .
2. QTime va QDateТime sinflari, ularning xossa va hodisalari.
Vaqt va sana bilan ishlash Qt yordamida amalga QDate , QTime, va QDateTime sinflari Sana va vaqt uchun mo'ljallangan va ular bilan turli operatsiyalarni amalga oshiriladi. Ko'pincha, siz hozirgi sana va vaqtni olishingiz kerak. Ushbu sinflar sanalar va vaqtlarni ma'lum bir format qatoriga o'tkazish usullarini taqdim etadi.
Belgilangan vaqt o'tganidan keyin taymer ilova to'g'risida xabar beradi. Taymer voqealari tashqi uzilishlar toifasiga kiradi. Tashqi uzilishlar - bu kirish-chiqarish moslamalari yoki taymer qurilmasining o'zi kabi asenkron hodisalar keltirib chiqaradigan uzilishlar. Taymerni boshlash intervallari millisekundlarda o'rnatiladi. Kamchilik shundaki, agar dastur intensiv hisob-kitoblar bilan band bo'lsa, unda taymer hodisalari hisoblash jarayoni oxirida qayta ishlanishi mumkin . Ilovadan chiqqanda taymerlar avtomatik ravishda yo'q qilinadi.
Dasturda ko'pincha sana va vaqt haqida ma'lumot talab qiladi. Masalan, hisobot ma'lumotlarini chiqarish yoki soatlarni ko‘rsatish. Qt : Sana va vaqt bilan ishlash uchun uch sinflar beradi QDate , QTime, va QDateTime , belgilangan yilda QDate , QTime, va QDateTime header fayllar .
QDate klassi sanalarni saqlash va ular bilan har xil operatsiyalarni bajarish uchun ma'lumotlar tuzilmasidir. Uchta tamsayı parametrlari QDate sinfining konstruktorida berilgan . Birinchisi yil, ikkinchisi oy, uchinchisi kun. Masalan, 2004 yil 25 oktyabr sanasini o'z ichiga olgan ob'ekt yarataylik:
Do'stlaringiz bilan baham: |