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 . Joriy vaqtni olish uchun QTime sinfida statik usul mavjud currentTime ().
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 . o'tgan ()
<< "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 .
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 .
Dasturlarda ko'pincha muayyan harakatlarni belgilangan vaqt oralig'ida vaqti-vaqti bilan takrorlash zarurati tug'iladi. Albatta, ba'zi hollarda, funktsiyani chaqirish uchun vaqt oralig'ini belgilash uchun siz QTime sinfining ob'ektidan foydalanishingiz va quyidagilarni bajarishingiz mumkin:
QTime vaqti;
time.start ( );
while ( ; time.elapsed () <1000;) {
}
funktsiya ( );
Ammo bu yondashuv juda katta kamchilikka ega. Loopni bajarish butun dasturni bir soniya to'xtatib turadi. Natijada, foydalanuvchi interfeysidagi voqealar qayta ishlanmaydi va agar derazalardan biri dastur oynasini yopib qo'ysa, u holda u shu vaqtgacha qayta chizilmaydi, ya'ni dastur shu vaqtgacha "muzlaydi".
Bunday vaziyatlarda dastur kelayotgan hodisalarni qayta ishlashi uchun QAppiication dastur sinfining processEvents () usulini chaqirib, tsiklning bajarilishini to'xtatib qo'yishingiz mumkin.
Masalan :
QTime taymer;
timer.start ( );
uchun ( ; timer.elapsed () <1000;)
{
qApp -> processEvents (0);
}
Do'stlaringiz bilan baham: |