logo

Ma’lumotlarni jadvallar ko’rinishida tasvirlash.

Загружено в:

08.08.2023

Скачано:

0

Размер:

37.69140625 KB
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.   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); 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:
   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); 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: 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: 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. 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);}            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 с.

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.