Ma’lumotlarni jadvallar ko’rinishida tasvirlash.
![Mavzu: Ma’lumotlarni jadvallar ko’rinishida tasvirlash.
Reja:
1.Qt dasturlash muhitida jadvallar yaratish usullari va ular bilan ishlash
imkoniyatlari.Vektor va massivlarni dasturlash.
2. TableWidjet sinfi haqida ma’lumot.](/data/documents/5a103536-f03c-47d6-8f6b-dfbcaac32249/page_1.png)
![QTableWidget klassi jadvaldir . Uyali ob'ekt QTableWidgetItem sinfida
amalga oshiriladi . Yaratilgan katakchani QTableWidget :: setItem () usulini
chaqirish orqali jadvalga kiritish mumkin . SetItem () usulining birinchi parametri
qator raqami, ikkinchisi ustun raqami. Shunday qilib, ushbu parametrlar jadvaldagi
hujayraning o'rnini belgilaydi . Agar Siz dan foydalanayotgan hujayraning o'zida
matn o'rnatishingiz mumkin QTableWidgetItem :: setText () usuli , va siz
foydalanishingiz mumkin QTableWidgetItem :: setIcon () bit hisobot joylashtirish
usuli . Agar katakchada ikkala matn bo'lsa va bitmap, bitmap matnning chap
qismida joylashgan bo'ladi.
QTableWidgetItem yacheykalar sinfi elementlarning nusxalarini yaratishga imkon
beruvchi nusxa ko'chirish konstruktorini taqdim etadi . Shu maqsadda clone ()
usulidan foydalanishingiz mumkin .
Matn va piktogrammalardan tashqari jadvalga vidjetlarni joylashtirishga ruxsat
beriladi . Buning uchun setCellWidget () usuli ishlatiladi .
Hujayra maydonini ikki marta bosganingizda, u QLineEdit vidjetidan foydalangan
holda tahrirlash rejimiga o'tadi .
6-rasmda ko'rsatilgan dastur uchta ustun va uchta qatordan iborat jadvaldan
foydalanadi . Hujayralar tarkibini o'zgartirish mumkin.
6-rasm.Jadval
main.cpp fayli
#include <QtGui>
int main(int argc, char** argv)
{
const int n = 3;
QApplication app(argc, argv);](/data/documents/5a103536-f03c-47d6-8f6b-dfbcaac32249/page_2.png)
![QTableWidget tbl(n, n);
QTableWidgetItem* ptwi = 0;
QStringList lst;
lst << "First" << "Second" << "Third";
tbl.setHorizontalHeaderLabels(lst);
tbl.setVerticalHeaderLabels(lst);
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
ptwi = new QTableWidgetItem(QString("%1,%2").arg(i).arg(j));
tbl.setItem(i, j, ptwi);
}
}
tbl.resize(350, 125);
tbl.show();
return app.exec();
}
Fayl bir yaratadi stol vidjet tbl . O'tgan birinchi va ikkinchi parametrlar
uchun konstruktor qatorlar va ustunlar sonini belgilash. Jadvalimiz 3 dan 3 gacha
bo'lgan o'lchamlarga ega bo'ladi . Jadval satrlari va ustunlar sarlavhalarini o'rnatish
uchun (bizda bir xil), avval ularning ro'yxatini tuzamiz va keyin gorizontal va
setVerticalHeaderLabel ( ) uchun setHorizontalHeaderLabel () uslubiga o'tkazamiz
vertikal sarlavhalar uchun.
Hujayra ob'ektlari tsiklda ( ptwi ko'rsatkichi ) yaratiladi . Satr va ustun raqamlari
uzatiladi matn sifatida uchun konstruktor . SetItem () usulini chaqirish orqali
yaratilgan jadval yacheykasi birinchi va ikkinchi parametrlarda ko'rsatilgan holatga
o'rnatiladi.
2. Vektorlar va massivlarni dasturlash.
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QStandardItemModel"](/data/documents/5a103536-f03c-47d6-8f6b-dfbcaac32249/page_3.png)
![#include "QStandardItem"
#include <QTableWidget>
#include <QMessageBox>
#include<QString>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->tableWidget->setColumnCount(4);
ui->tableWidget->setRowCount(2);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QString array[4][2];
int a=0;
for(int i=0; i<2; i++)
for(int j=0; j<4; j++)
{
QTableWidgetItem* item = ui->tableWidget->item(i,j);
if(ui->tableWidget->item(i,j)==0)
{
ui->tableWidget->setItem(i,j, new QTableWidgetItem("The Cell is
Empty"));
a=a+1;](/data/documents/5a103536-f03c-47d6-8f6b-dfbcaac32249/page_4.png)
![}
}
if(a!=0) QMessageBox::information(this,"New Info","Your table is not full");
else
{
for(int i=0; i<2; i++)
for(int j=0; j<4; j++)
{
QTableWidgetItem* item = ui->tableWidget->item(i,j);
array[j]=item(i,j);
}}}
Sinov uchun savollar:
1.Qt dasturlash muhitida jadvallar yaratish usullari va ular bilan ishlash
imkoniyatlari.Vektor va massivlarni dasturlash.
2. TableWidjet sinfi haqida ma’lumot.
Uyga vazifa : С ++ tizimida arifmetik amallarni mukammal o'rganish va
ularni amaloyotga tatbiq etish.
Adabiyotlar
[6],[7],[8],[9],[10],[11],[13], [14],[15],[16]
13-ma’ruza
Mavzu: Vaqt va sana bilan bog’liq jarayonlarni dasturlash
Reja:
1.Taymer,vaqt va sana bilan bog’liq jarayonlarni dasturlash.
2.QTime va QDateТime sinflari,ularning xossa va hodisalari.
Darsning maqsadi:
1. Talabalarda Sizeof operatori to’g’risida umumiy bilimlarni hosil qilish.
2. С++ tizimida mantiqiy va taqqoslash amallari to’g’risida amaliy ko’nikmaga
ega bo’lish.
3. С++ tizimida mustaqil ishlash malakalarini shakllantirish.
Tayanch iboralar: Sizeof operator,mantiqiy amallar, taqqoslash amallari.](/data/documents/5a103536-f03c-47d6-8f6b-dfbcaac32249/page_5.png)
![Dars o‘tish vositalari: sinf doskasi, o‘quv-uslubiy qo‘llanmalar, ma‘ruza
matnlari, komputer, ma‘ruza bo‘yicha slaydlar , С++ tizimi .
Dars o‘tish usuli: namoyish dasturiy vositalar orqali , jonli muloqotli ma‘ruza .
Darsning xrono xaritasi – 80 minut.
Tashkiliy qism: xonaning tozaligi, jihozlanikishi, sanitariya holati. Talabalarning
davomati– 2 minut.
Talabalar bilimini baholash: o‘tilgan mavzuni qisqacha takrorlash, talabala
bilan savol javob o‘tkazish - 10 minut.
Yangi mavzu bayoni - 55 minut.
Mavzuni o’zlashtirish darajasini aniqlash va mustahkamlash – 10 minut.
Sinov savollari – 5 minut.
Uyga vazifa berish – 3 minut.
Ma’ruza bayoni
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);](/data/documents/5a103536-f03c-47d6-8f6b-dfbcaac32249/page_6.png)
![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 ( );](/data/documents/5a103536-f03c-47d6-8f6b-dfbcaac32249/page_7.png)
![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](/data/documents/5a103536-f03c-47d6-8f6b-dfbcaac32249/page_8.png)
![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](/data/documents/5a103536-f03c-47d6-8f6b-dfbcaac32249/page_9.png)
![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:
QDate date (2007, 10, 25);
Ushbu qiymatlarni setDate () usuli yordamida ob'ekt yaratilgandan so'ng o'rnatish
mumkin . Masalan; misol uchun:
QDate sana ;
sana . setDate ( 2007, 10, 25);
Sana ob'ektida o'rnatilgan yil, oy va kun qiymatlarini olish uchun quyidagi
usullardan foydalaning:
year ( ) - butun yilni 1752 dan 8000 gacha qaytaradi;
month ( ) - 1 dan 12 gacha (yanvardan dekabrgacha) oralig'idagi oy uchun butun
son qiymatini qaytaradi;
day ( ) - Oyning kunini 1 dan 31 gacha qaytaradi.
DaysInMonth () usulidan foydalanib, siz bir oydagi kunlar sonini va daysInYear ()
usulidan foydalanib, bir yil ichidagi kunlar sonini bilib olishingiz mumkin .
Haftaning kunini olish uchun dayOfWeek () usulini chaqiring . Yilning kunini
olish uchun dayOfYear () usuli qo'llaniladi . Shuningdek, hafta raqamini
weekNumber () usuliga murojaat qilib bilib olishingiz mumkin .
ToString () usuli sana matnli ko'rinishini olish imkonini beradi.
Siz o'zingizning vaqt formatingizni belgilaydigan toString () uslubiga joker
belgilar qatorini o'tkazib belgilashingiz mumkin . Masalan :
QDate sanasi ( 2007, 10, 25);](/data/documents/5a103536-f03c-47d6-8f6b-dfbcaac32249/page_10.png)
![QString ko'chasi ;
str = date.toString (" dMyy "); // str - "3.7.07"
str = date.toString (" dd / MM / yy "); // str - "03/07/04"
str = date.toString (" yyyy.MMM.ddd "); // str = "2007. Jul.Sat"
str = date.toString (" yyyy.MMMM.dddd "); // str = "2007.Jul. Shanba"
AddDays () usulidan foydalanib, o'zgartirilgan sanani undan kunlarni qo'shish yoki
olib tashlash orqali olishingiz mumkin. AddMonths () va addYears () usullarining
harakatlari o'xshash, ammo farqi shundaki, ular oylar va yillar bilan ishlaydi.
Masalan :
QDate sanasi ( 2007, 1, 3);
QDate date2 = date.addDays ( -7);
QString str = date2.toString ( " dd / MM / yy "); // str = "27/12/06"
QDate sinfi string satridan QDate turiga teskari konvertatsiya qilishga imkon
beruvchi fromString () usulini taqdim etadi . Buning uchun format usulning
birinchi parametrida o'tkazilishi kerak. Eng keng tarqalgan operatsiyalardan biri bu
dolzarb sanani olishdir. Buning uchun currentDate () usulini chaqiring .
DaysTo () usuli yordamida siz ikki sana o'rtasidagi kunlar farqini bilib olishingiz
mumkin. Quyidagi misolda joriy kundan Yangi yilgacha bo'lgan kunlar soni
aniqlanadi:](/data/documents/5a103536-f03c-47d6-8f6b-dfbcaac32249/page_11.png)
![QDate dateToday = QDate :: currentDate ( );
QDate dateNewYear ( dateToday.year (), 12, 31);
qDebug ( ) << "Qolgan" << dateToday . daysTo ( dateNewYear ) << "Yangi yil
oldidan kunlar";
Sana ob'ektlarini QDate sinfidagi ==, !! Operatorlarini aniqlash orqali bir-biri bilan
taqqoslash mumkin . =, <, <=,> va> =. Masalan :
QDate datel ( 2007, 1, 3);
QDate sana2 ( 2007, 1, 5);
bool b = ( datel == sana2 ); // b = noto'g'ri
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 vaqti ( 20, 4);
Ushbu qiymatlar setHMS () usuli yordamida vaqt ob'ekti yaratilgandan so'ng
o'rnatilishi mumkin . Masalan; misol uchun:](/data/documents/5a103536-f03c-47d6-8f6b-dfbcaac32249/page_12.png)
![QTime vaqt ;
vaqt . 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.](/data/documents/5a103536-f03c-47d6-8f6b-dfbcaac32249/page_13.png)
![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](/data/documents/5a103536-f03c-47d6-8f6b-dfbcaac32249/page_14.png)
![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);}](/data/documents/5a103536-f03c-47d6-8f6b-dfbcaac32249/page_15.png)
![Foydalanilgan ea dabiyotlar ro’yxati
1. Sh.A.Nazirov, R.V.Qobulov, M.R.Babajanov «C va C++ TILI»
2. Informatika fanidan o’quv qo’llanma //TATU 489 b. Toshkent, 2012.
3. C / C ++. Программирование на языке высокого уровня / Т. А.
Павловская. — СПб.:Питер, 2003. —461 с: ил.
4. Программирование на языке С++ в среде Qt Creator :
5. / Е. Р. Алексеев, Г. Г. Злобин, Д. А. Костюк,О. В. Чеснокова,
6. А. С. Чмыхало — М. : ALT Linux , 2015. — 448 с.
7. Жасмин Бланшет, Марк Саммерфилд Qt 4:Программирование GUI на
C ++
8. М.Шлее, Qt 5.10. Профессиональное программирование на С++. - СПб.:
БХВ-Петербург, 2018. - 1072 с.](/data/documents/5a103536-f03c-47d6-8f6b-dfbcaac32249/page_16.png)
Mavzu: Ma’lumotlarni jadvallar ko’rinishida tasvirlash. Reja: 1.Qt dasturlash muhitida jadvallar yaratish usullari va ular bilan ishlash imkoniyatlari.Vektor va massivlarni dasturlash. 2. TableWidjet sinfi haqida ma’lumot.
QTableWidget klassi jadvaldir . Uyali ob'ekt QTableWidgetItem sinfida amalga oshiriladi . Yaratilgan katakchani QTableWidget :: setItem () usulini chaqirish orqali jadvalga kiritish mumkin . SetItem () usulining birinchi parametri qator raqami, ikkinchisi ustun raqami. Shunday qilib, ushbu parametrlar jadvaldagi hujayraning o'rnini belgilaydi . Agar Siz dan foydalanayotgan hujayraning o'zida matn o'rnatishingiz mumkin QTableWidgetItem :: setText () usuli , va siz foydalanishingiz mumkin QTableWidgetItem :: setIcon () bit hisobot joylashtirish usuli . Agar katakchada ikkala matn bo'lsa va bitmap, bitmap matnning chap qismida joylashgan bo'ladi. QTableWidgetItem yacheykalar sinfi elementlarning nusxalarini yaratishga imkon beruvchi nusxa ko'chirish konstruktorini taqdim etadi . Shu maqsadda clone () usulidan foydalanishingiz mumkin . Matn va piktogrammalardan tashqari jadvalga vidjetlarni joylashtirishga ruxsat beriladi . Buning uchun setCellWidget () usuli ishlatiladi . Hujayra maydonini ikki marta bosganingizda, u QLineEdit vidjetidan foydalangan holda tahrirlash rejimiga o'tadi . 6-rasmda ko'rsatilgan dastur uchta ustun va uchta qatordan iborat jadvaldan foydalanadi . Hujayralar tarkibini o'zgartirish mumkin. 6-rasm.Jadval main.cpp fayli #include <QtGui> int main(int argc, char** argv) { const int n = 3; QApplication app(argc, argv);
QTableWidget tbl(n, n); QTableWidgetItem* ptwi = 0; QStringList lst; lst << "First" << "Second" << "Third"; tbl.setHorizontalHeaderLabels(lst); tbl.setVerticalHeaderLabels(lst); for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { ptwi = new QTableWidgetItem(QString("%1,%2").arg(i).arg(j)); tbl.setItem(i, j, ptwi); } } tbl.resize(350, 125); tbl.show(); return app.exec(); } Fayl bir yaratadi stol vidjet tbl . O'tgan birinchi va ikkinchi parametrlar uchun konstruktor qatorlar va ustunlar sonini belgilash. Jadvalimiz 3 dan 3 gacha bo'lgan o'lchamlarga ega bo'ladi . Jadval satrlari va ustunlar sarlavhalarini o'rnatish uchun (bizda bir xil), avval ularning ro'yxatini tuzamiz va keyin gorizontal va setVerticalHeaderLabel ( ) uchun setHorizontalHeaderLabel () uslubiga o'tkazamiz vertikal sarlavhalar uchun. Hujayra ob'ektlari tsiklda ( ptwi ko'rsatkichi ) yaratiladi . Satr va ustun raqamlari uzatiladi matn sifatida uchun konstruktor . SetItem () usulini chaqirish orqali yaratilgan jadval yacheykasi birinchi va ikkinchi parametrlarda ko'rsatilgan holatga o'rnatiladi. 2. Vektorlar va massivlarni dasturlash. #include "mainwindow.h" #include "ui_mainwindow.h" #include "QStandardItemModel"
#include "QStandardItem" #include <QTableWidget> #include <QMessageBox> #include<QString> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ui->tableWidget->setColumnCount(4); ui->tableWidget->setRowCount(2); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_clicked() { QString array[4][2]; int a=0; for(int i=0; i<2; i++) for(int j=0; j<4; j++) { QTableWidgetItem* item = ui->tableWidget->item(i,j); if(ui->tableWidget->item(i,j)==0) { ui->tableWidget->setItem(i,j, new QTableWidgetItem("The Cell is Empty")); a=a+1;
} } if(a!=0) QMessageBox::information(this,"New Info","Your table is not full"); else { for(int i=0; i<2; i++) for(int j=0; j<4; j++) { QTableWidgetItem* item = ui->tableWidget->item(i,j); array[j]=item(i,j); }}} Sinov uchun savollar: 1.Qt dasturlash muhitida jadvallar yaratish usullari va ular bilan ishlash imkoniyatlari.Vektor va massivlarni dasturlash. 2. TableWidjet sinfi haqida ma’lumot. Uyga vazifa : С ++ tizimida arifmetik amallarni mukammal o'rganish va ularni amaloyotga tatbiq etish. Adabiyotlar [6],[7],[8],[9],[10],[11],[13], [14],[15],[16] 13-ma’ruza Mavzu: Vaqt va sana bilan bog’liq jarayonlarni dasturlash Reja: 1.Taymer,vaqt va sana bilan bog’liq jarayonlarni dasturlash. 2.QTime va QDateТime sinflari,ularning xossa va hodisalari. Darsning maqsadi: 1. Talabalarda Sizeof operatori to’g’risida umumiy bilimlarni hosil qilish. 2. С++ tizimida mantiqiy va taqqoslash amallari to’g’risida amaliy ko’nikmaga ega bo’lish. 3. С++ tizimida mustaqil ishlash malakalarini shakllantirish. Tayanch iboralar: Sizeof operator,mantiqiy amallar, taqqoslash amallari.