logo

Shartli va tanlash jarayonlarni dasturlash.

Yuklangan vaqt:

08.08.2023

Ko'chirishlar soni:

0

Hajmi:

40.2861328125 KB
Mavzu :   -Mavzu: Shartli va tanlash jarayonlarni dasturlash.
Reja:
1.  Shartli jarayonlarni Qt muhitida dasturlash.
2.   Qt   dasturlash   muhitida   tanlash(RadioButton,CheckBox)   va   elementlari
tanlanadigan   ro’yxatlar(Combobox)   haqida   ma’lumotlar,ularning   xossa   va
hodisalari.
  1. Shartli jarayonlarni Qt muhitida dasturlash.
Tanlash   selektorlari   ma'lumotlarni   namoyish   qilish,   o'zgartirish   va   tanlash
uchun standart grafik interfeysli elementlaridir. Ushbu mavzudagi bir qator sinflar
-   QListwidget,   QTreeWidget   va   QTableWidget   -   model   ko'rinishi   arxitekturasiga
asoslangan.   Ushbu   arxitektura   sinflaridan   to'g'ridan-to'g'ri   foydalanish   bu   erda
tasvirlangan sinflar bilan taqqoslaganda ba'zi afzalliklarni beradi va shuning uchun
ko'p hollarda afzalroqdir. 
2. Qt dasturlash muhitida tanlash(RadioButton,CheckBox) va elementlari
tanlanadigan ro’yxatlar(Combobox) haqida ma’lumotlar ,ularning xossa
va hodisalari .
QCheckBox bayroqchalari
                 Aksariyat dasturlar dasturning xatti-harakatlarini o'zgartirish uchun turli xil
sozlamalarni   taqdim   etadi.   QCheckBox   vidjeti   bu   maqsadda   foydali   bo'lishi
mumkin,  bu   foydalanuvchiga   bir   vaqtning   o'zida   bir   nechta   parametrlarni   tanlash
imkonini   beradi.   Belgilash   qutisi   vidjetining   QCheckBox   sinfi   QCheckBox
sarlavha faylida aniqlangan. 
                  Agar   beshdan   ko'p   variant   mavjud   bo'lsa,   unda   QListWidget   ro'yxati
vidjetidan foydalanish yaxshiroqdir.
Belgilash   katakchasi   kichkina   to'rtburchakdan   iborat   bo'lib,   uning   yonida   izohli
matn yoki rasmdan bo'lishi mumkin. Vidjetni bosganingizda to'rtburchakda tasdiq
belgisi   paydo  bo'ladi.   Vidjet   faol   bo'lganda   <bo'sh   joy>(probel)   tugmasini   bosish
orqali   uni   belgilash   mumkin.   Ushbu   vidjet   dastur   mantig'iga   ko'ra   "yoqish"   yoki
"o'chirish"   holatiga   o'rnatiladi   va   bu   holatlarni   o’rnatish   va   o’chirish   tugmasi
hisoblanadi(51-rasm). Ammo, bu ikki holatdan farqli o'laroq, QCheckBox uchinchi
-   aniqlanmagan   holatga   ham   ega   bo'lishi   mumkin.   Ushbu   holat   qanday
ishlatilishini   misol   sifatida   Windows-da   Explorer   xususiyatlari   oynasida   turli   xil
xususiyatlarga ega bir nechta fayllarni tanlaganda ko'rish mumkin.   51-rasm.QCheckBox holatlari
#include <QtGui>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QWidget wgt;
QCheckBox* pchkNormal = new QCheckBox("&Normal Check Box");
pchkNormal->setChecked(true);
QCheckBox* pchkTristate = new QCheckBox("&Tristate Check Box");
pchkTristate->setTristate(true);
pchkTristate->setCheckState(Qt::PartiallyChecked);
//Layout setup
QVBoxLayout* pvbxLayout = new QVBoxLayout;
pvbxLayout->addWidget(pchkNormal);
pvbxLayout->addWidget(pchkTristate);
wgt.setLayout(pvbxLayout);
wgt.show();
return app.exec();
}
Yuqoridagi   dasturda   ikkita   bayroq   ko'rsatkichlari   -   pchkNormal   va   pchkTristate
yaratildi. Normal QCheckBox vidjeti  setChecked()  metodiga true parameter berilib
vidjet belgilangan holatga o’tkazilgan. Tristate QCheckBox   setTristate()   metodiga
true   parameter   berilib   vidjet   uchinchi,   aniqlanmagan   holatga   o’tkazilgan.   Keyin
setCheckState()   usulini   Qt::   PartiallyChecked   chaqirish   orqali   uchinchi   holat
o'rnatiladi.
QRadioButton radiotugmalar sinfi Uzining   inglizcha   -   RadioButton   nomini   -   panelida   faqat   bitta   tugmachani
bosish   mumkin   bo'lgan   radio   qabul   qilgich   tugmachalariga   o'xshashligi   tufayli
paydo   bo'ldi.   Bu   tugmalar   odatda   guruh   bo’lib   keladi   va   guruhdagi     biror
RadioButton   tugmani   belgilash,   guruhdagi   avval   bosilgan   tugmani   avtomatik
ravishda o'chiradi.
RadioButton   vidjeti,   ikki   holatda   bo'lishi   mumkin:   belgilangan   yoki
belgilanmagan(o'chirilgan).   Foydalanuvchi   ushbu   holatlarni   vidjey   faol   bo'lganda
sichqonchani chap tugmasini bir marta bosish yoki <bo'sh joy> tugmasi yordamida
o'rnatishi mumkin.
RadioButton vidjetining QRadioButton sinfi QRadioButton sarlavha faylida
aniqlangan.Ushbu   vidjet   foydalanuvchiga   kamida   ikkita   taklifdan   birini   tanlashni
ta'minlashi kerak. RadioButton vidjetlarini alohida holatda ishlatish mumkin emas
va   ularni   birgalikda   guruhlash   kerak.   Ularni,   masalan,   QGroupBox   sinfidan
foydalanib xam guruhlashingiz mumkin. 
Guruhda   ishlatiladigan   har   bir   Radiotugma   uchun   tushuntirish   yozuvlari
aniqlanishi   kerak,   shuningdek,   har   bir   tugmani   tezroq   faollashtirish   uchun
klaviatura tugmalarini o'rnatish maqsadga muvofiqdir. Bu tugma yozuvida kerakli
harfning oldiga & belgisini qo'shish orqali amalga oshiriladi.
RadioButtonlarning afzalligi shundaki, barcha variantlar birdaniga ko'rinadi,
ammo   ular   juda   ko'p   joy   egallaydi.   Shuning   uchun,   agar   radio   tugmachalari   soni
beshtadan   ko'p   bo'lsa,   unda   QComboBox   ochiladigan   ro’yxat   vidjetidan
foydalanish yaxshiroqdir.
QRadioButon vidjeti #include <QtGui>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QGroupBox gbx("&Colors");
QRadioButton* pradRed = new QRadioButton("&Red");
QRadioButton* pradGreen = new QRadioButton("&Green");
QRadioButton* pradBlue = new QRadioButton("&Blue");
pradGreen->setChecked(true);
//Layout setup
QVBoxLayout* pvbxLayout = new QVBoxLayout;
pvbxLayout->addWidget(pradRed);
pvbxLayout->addWidget(pradGreen);
pvbxLayout->addWidget(pradBlue);
gbx.setLayout(pvbxLayout);
gbx.show();
return app.exec();
}
  Bu   dasturda   gbx   radio   tugmachalari   guruhi   uchun   vidjetlar   yaratiladi.   PradRed,
pradGreen   va   pradBlue   Radiotugmalarini   yaratgandan   so'ng,   ulardan   biri
(pradGreen)   setChecked()   usulini   true   parametr   bilan   chaqirib   yoqilgan   holatga
o’tkaziladi.   Tugmalar   gbx   guruh   vidjetiga   joylashtirilgan   va   QVBoxLayout   sinf
ob'ekti ularni avtomatik ravishda vertikal ravishda joylashtiradi.
Elementlari  tanlanadigan ochiladigan ro'yxat
QComboBox klassi foydalanuvchiga bir nechta elementlardan birini tanlash
imkoniyatini   beradi.   Uning   ishi   QListWidget   oddiy   ro'yxat   vidjeti   bilan   bir   xil.
Ochiladigan   ro'yxatning   asosiy   afzalligi   shundaki,   u   faqat   bitta   (tanlangan)
elementni   namoyish   etadi,   shuning   uchun   uni   joylashtirish   uchun   ko'p   joy
egallanmaydi.   Foydalanuvchiga   mavjud   variantlardan   tanlovni   amalga   oshirishi uchun   butun   ro'yxat   faqat   ma'lum   bir   vaqtga   namoyish   qilinadi   (ro’yxat
ochilganda), so'ngra ro'yxat dastlabki holatga qaytariladi (yopiladi).
Element   sifatida   bu   ro’yxatga     matn   va   /   yoki   rasm   qo'shish   mumkin.   Bu
addItem()   usuli   yordamida   amalga   oshiriladi.   QStringList   klassi   ob'ektining
addItems()   usuliga bir vaqtning o'zida bir nechta matn elementlarini qo'shish bilan
ro’yxatga   bir   nechta   matn   elementlarini   qo’shish   mumkin.
SetDuplicatesEnabled (false)   usuli   yordamida,   ro’yxatdagi   takrorlanadigan
elementlarni   o'chirish rejimni o’rnatish mumkin. Agar ochilgan ro'yxatdagi barcha
elementlarni olib tashlash kerak bo'lsa, u holda  clear()  usuli ishlatiladi.
Elementlarning   qaysi   biri   ayni   vaqtda   belgilanganligini   aniqlash   uchun
belgilangan   element   tartib   raqamini   beruvchi-currentIndex()usulidan   foydalanish
kerak.
Foydalanuvchining   o'ziga   xam   ro'yxatga   elementlarni   qo'shish   imkoniyati
mavjud. Vidjetni ushbu rejimga o'tkazish uchun setEditable() usuliga true parametr
beriladi.   Foydalanuvchi   tanlangan   elementning   matnini   o'zgartirgandan   so'ng
editTextChanged(const   QString   &)   signali   yuboriladi   va   yangi   element   ro'yxatga
qo'shiladi.
#include <QtGui>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QComboBox cbo;
QStringList lst;
lst << "John" << "Paul" << "George" << "Ringo";      cbo.addItems(lst);
cbo.setEditable(true);
cbo.show(); 
return app.exec();
}
Elementni tanlagandan so'ng, bir vaqtning o'zida ikkita activated() signallari
yuboriladi   -   biri   int   tipidagi   parametr   bilan   (tanlangan   elementning   indeksi), ikkinchisi   esa   QString   tipli   paramet   bilan   (uning   qiymati).   Ushbu   signallar
foydalanuvchi   oldindan   tanlangan   elementni   tanlagan   bo'lsa   ham   yuboriladi;
currentIndexChanged()   signallari   real   o'zgarish   haqida   xabar   berish   uchun
ishlatiladi,   shuningdek   int   tanlangan   element   indeksi     va   uning   qiymati   const
QString parametrlar bilan yuboriladi.
Quyidagi rasmdagi misol ochiladigan vidjetni namoyish etadi. Agar element
o'zgartirilsa, ro'yxat yangisi bilan to'ldiriladi.
#include <QtGui>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QComboBox cbo;
QStringList lst;
lst << "John" << "Paul" << "George" << "Ringo";     
cbo.addItems(lst);
cbo.setEditable(true);
cbo.show(); 
return app.exec();
}
Yuqoridagi dastur   cbo   nomli ochiladigan vidjetni yaratadi. Keyin lst ga to'rta
qator   qo'shiladi.   Ushbu   to'rtta   satr   ochiladigan   vidjetda   addItems()   usuli   orqali
o'rnatiladi.   True   parametr   bilan   setEditable()   usulini   chaqirish   ro'yxatni   tahrirlash
rejimiga o'tkazadi.
Sinov savollari:
1.  Shartli jarayonlarni Qt muhitida dasturlashni tushuntiring.
2.   Qt   dasturlash   muhitida   tanlash(RadioButton,CheckBox)   va   elementlari
tanlanadigan   ro’yxatlar(Combobox)   haqida   ma’lumotlar,ularning   xossa   va
hodisalarini ayting.
Uyga vazifa : Matn   maydonlari,tanlash,belgilash     va   boshqa   vidjetlar   va   tartiblashlardan
foydalanib (LineEdit,RadioButton, CheckBox, Combobox va boshq) ,(F.I.O., t.yili,
manzili,   ma’lumoti   …..)maydonlari   bor   registrasiya   oynasini   yarating.Kiritilgan
ma’lumotlarni ro’yxatda ko’rinib turadigan qiling.            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 : -Mavzu: Shartli va tanlash jarayonlarni dasturlash. Reja: 1. Shartli jarayonlarni Qt muhitida dasturlash. 2. Qt dasturlash muhitida tanlash(RadioButton,CheckBox) va elementlari tanlanadigan ro’yxatlar(Combobox) haqida ma’lumotlar,ularning xossa va hodisalari.

1. Shartli jarayonlarni Qt muhitida dasturlash. Tanlash selektorlari ma'lumotlarni namoyish qilish, o'zgartirish va tanlash uchun standart grafik interfeysli elementlaridir. Ushbu mavzudagi bir qator sinflar - QListwidget, QTreeWidget va QTableWidget - model ko'rinishi arxitekturasiga asoslangan. Ushbu arxitektura sinflaridan to'g'ridan-to'g'ri foydalanish bu erda tasvirlangan sinflar bilan taqqoslaganda ba'zi afzalliklarni beradi va shuning uchun ko'p hollarda afzalroqdir. 2. Qt dasturlash muhitida tanlash(RadioButton,CheckBox) va elementlari tanlanadigan ro’yxatlar(Combobox) haqida ma’lumotlar ,ularning xossa va hodisalari . QCheckBox bayroqchalari Aksariyat dasturlar dasturning xatti-harakatlarini o'zgartirish uchun turli xil sozlamalarni taqdim etadi. QCheckBox vidjeti bu maqsadda foydali bo'lishi mumkin, bu foydalanuvchiga bir vaqtning o'zida bir nechta parametrlarni tanlash imkonini beradi. Belgilash qutisi vidjetining QCheckBox sinfi QCheckBox sarlavha faylida aniqlangan. Agar beshdan ko'p variant mavjud bo'lsa, unda QListWidget ro'yxati vidjetidan foydalanish yaxshiroqdir. Belgilash katakchasi kichkina to'rtburchakdan iborat bo'lib, uning yonida izohli matn yoki rasmdan bo'lishi mumkin. Vidjetni bosganingizda to'rtburchakda tasdiq belgisi paydo bo'ladi. Vidjet faol bo'lganda <bo'sh joy>(probel) tugmasini bosish orqali uni belgilash mumkin. Ushbu vidjet dastur mantig'iga ko'ra "yoqish" yoki "o'chirish" holatiga o'rnatiladi va bu holatlarni o’rnatish va o’chirish tugmasi hisoblanadi(51-rasm). Ammo, bu ikki holatdan farqli o'laroq, QCheckBox uchinchi - aniqlanmagan holatga ham ega bo'lishi mumkin. Ushbu holat qanday ishlatilishini misol sifatida Windows-da Explorer xususiyatlari oynasida turli xil xususiyatlarga ega bir nechta fayllarni tanlaganda ko'rish mumkin.

51-rasm.QCheckBox holatlari #include <QtGui> int main(int argc, char** argv) { QApplication app(argc, argv); QWidget wgt; QCheckBox* pchkNormal = new QCheckBox("&Normal Check Box"); pchkNormal->setChecked(true); QCheckBox* pchkTristate = new QCheckBox("&Tristate Check Box"); pchkTristate->setTristate(true); pchkTristate->setCheckState(Qt::PartiallyChecked); //Layout setup QVBoxLayout* pvbxLayout = new QVBoxLayout; pvbxLayout->addWidget(pchkNormal); pvbxLayout->addWidget(pchkTristate); wgt.setLayout(pvbxLayout); wgt.show(); return app.exec(); } Yuqoridagi dasturda ikkita bayroq ko'rsatkichlari - pchkNormal va pchkTristate yaratildi. Normal QCheckBox vidjeti setChecked() metodiga true parameter berilib vidjet belgilangan holatga o’tkazilgan. Tristate QCheckBox setTristate() metodiga true parameter berilib vidjet uchinchi, aniqlanmagan holatga o’tkazilgan. Keyin setCheckState() usulini Qt:: PartiallyChecked chaqirish orqali uchinchi holat o'rnatiladi. QRadioButton radiotugmalar sinfi

Uzining inglizcha - RadioButton nomini - panelida faqat bitta tugmachani bosish mumkin bo'lgan radio qabul qilgich tugmachalariga o'xshashligi tufayli paydo bo'ldi. Bu tugmalar odatda guruh bo’lib keladi va guruhdagi biror RadioButton tugmani belgilash, guruhdagi avval bosilgan tugmani avtomatik ravishda o'chiradi. RadioButton vidjeti, ikki holatda bo'lishi mumkin: belgilangan yoki belgilanmagan(o'chirilgan). Foydalanuvchi ushbu holatlarni vidjey faol bo'lganda sichqonchani chap tugmasini bir marta bosish yoki <bo'sh joy> tugmasi yordamida o'rnatishi mumkin. RadioButton vidjetining QRadioButton sinfi QRadioButton sarlavha faylida aniqlangan.Ushbu vidjet foydalanuvchiga kamida ikkita taklifdan birini tanlashni ta'minlashi kerak. RadioButton vidjetlarini alohida holatda ishlatish mumkin emas va ularni birgalikda guruhlash kerak. Ularni, masalan, QGroupBox sinfidan foydalanib xam guruhlashingiz mumkin. Guruhda ishlatiladigan har bir Radiotugma uchun tushuntirish yozuvlari aniqlanishi kerak, shuningdek, har bir tugmani tezroq faollashtirish uchun klaviatura tugmalarini o'rnatish maqsadga muvofiqdir. Bu tugma yozuvida kerakli harfning oldiga & belgisini qo'shish orqali amalga oshiriladi. RadioButtonlarning afzalligi shundaki, barcha variantlar birdaniga ko'rinadi, ammo ular juda ko'p joy egallaydi. Shuning uchun, agar radio tugmachalari soni beshtadan ko'p bo'lsa, unda QComboBox ochiladigan ro’yxat vidjetidan foydalanish yaxshiroqdir. QRadioButon vidjeti

#include <QtGui> int main(int argc, char** argv) { QApplication app(argc, argv); QGroupBox gbx("&Colors"); QRadioButton* pradRed = new QRadioButton("&Red"); QRadioButton* pradGreen = new QRadioButton("&Green"); QRadioButton* pradBlue = new QRadioButton("&Blue"); pradGreen->setChecked(true); //Layout setup QVBoxLayout* pvbxLayout = new QVBoxLayout; pvbxLayout->addWidget(pradRed); pvbxLayout->addWidget(pradGreen); pvbxLayout->addWidget(pradBlue); gbx.setLayout(pvbxLayout); gbx.show(); return app.exec(); } Bu dasturda gbx radio tugmachalari guruhi uchun vidjetlar yaratiladi. PradRed, pradGreen va pradBlue Radiotugmalarini yaratgandan so'ng, ulardan biri (pradGreen) setChecked() usulini true parametr bilan chaqirib yoqilgan holatga o’tkaziladi. Tugmalar gbx guruh vidjetiga joylashtirilgan va QVBoxLayout sinf ob'ekti ularni avtomatik ravishda vertikal ravishda joylashtiradi. Elementlari tanlanadigan ochiladigan ro'yxat QComboBox klassi foydalanuvchiga bir nechta elementlardan birini tanlash imkoniyatini beradi. Uning ishi QListWidget oddiy ro'yxat vidjeti bilan bir xil. Ochiladigan ro'yxatning asosiy afzalligi shundaki, u faqat bitta (tanlangan) elementni namoyish etadi, shuning uchun uni joylashtirish uchun ko'p joy egallanmaydi. Foydalanuvchiga mavjud variantlardan tanlovni amalga oshirishi