logo

Dasturlash muhitida satrli ma’lumotlarni yaratish usullari.

Загружено в:

08.08.2023

Скачано:

0

Размер:

713.0439453125 KB
Mavzu: Dasturlash muhitida satrli ma’lumotlarni yaratish usullari.
Reja:
1.Bir satrli va ko’p satrli vidjetlar. 
2.Satrli ma’lumotlarni bezash. 
3.Ro’yxatli vidjetlar.
4.Saralash algoritmlarini satrli vidjetlarda qo’llash. 
5.Qt dasturlash muhitida satrlar bilan ishlash operatorlari.
  1. Qt dasturlash muhitida  s atrlar bilan ishlash operatorlari.
1. Qt da o’zgaruvchilarning quyidagi tiplari mavjud:
Qt  tipi C++  dagi ekvivalenti Bitlardagi
o’lchami
qint8 signed char 8
quint8 unsigned char 8
qint16 short 16
quint16 unsigned short 16
qint32 int 32
quint32 unsigned int 32
qint64 __int64  yoki  long long 64
quint64 unsigned __int64 yoki unsigned
long long 64
qlonglong qint64  ning boshqa ko’rinishi 64
qulonglong quint64  ning boshqa ko’rinishi 64
qreal Double  ning boshqa ko’rinishi 64
uchar unsigned char ning boshqa
ko’rinishi 8
Oldindan o’rnatilgan qoidalarga asosan short, int, long va long long tiplari 
ishorali tiplar,ya’ni ular xam manfiy xam musbat qiymatlar qabul qilishi mumkin. Agarda faqat musbat qiymatlarni qabul qiluvchi o’zgaruvchilar yaratishda 
unsigned (ishorasiz) kalit so’zidan foydalaniladi. Agar short tipi —32,768 va 
+32,767 oraliqdagi qiymatlarni qabul qilsa, unsigned short tipi faqat 0 dan 65   535 
gacha bo’lgan oraliqdagi qiymatlarni qabul qilishi mumkin.
Bool turi chin(true) yoki yolg'on(false) qiymatli bo'lishi mumkin. Bundan 
tashqari, bool o'rniga raqamli turlardan foydalanish mumkin; bu holda 0 
yolg’on(false) va noldan farqli har qanday qiymat chin(true) bo'ladi.
Char turi ASCII belgilarini va 8 bitli butun sonlarni (bayt) saqlash uchun 
ishlatiladi. Ushbu maydondagi butun son, platformaga qarab, ishoraga ega bo’lishi 
yoki ega bo’lmasligi mumkin.Qt 16-bitli Unicode belgilarini saqlaydigan QChar 
turini taqdim etadi.
Xotirada raqamli turlar (longdan tashqari) Qt tomonidan qo'llab-
quvvatlanadigan turli platformalarda bir xil o'lchamlarga ega, ammo ularning 
namoyishi tizimning bayt tartibiga qarab o'zgaradi. 
Qt-da QStrings bilan ishlash uchun.
• # Fayl boshiga  <QString> satrini qo’shish shart;
• QString elementlari QChar belgilar turiga kiradi.
Satrni qiymat belgilash uchun = operatoridan foydalanishingiz mumkin.
• Satrlarni ==, <=,> =,! =,>, < lardan foydalanib taqqoslash mumkin. Natija 
satr tarkibidagi harflarga bog'liq.
• Elementga [] yoki .at (indeks) yordamida murojaat qilish mumkin. Index 
noldan boshlanadi.
• Satrlarni qo’shish uchun  +, + = dan foydalanishin mumkin.
QString klassi odatiy satrni 16 bitli QChar qiymatlari sifatida saqlaydigan 
Unicode satrini ifodalaydi, bu erda har bir QChar  Unicode 4.0 belgilariga mos 
keladi. Boshqa ko'plab dasturlash tillaridagi satrlardan farqli o'laroq, QString 
o'zgartirilishi mumkin.
QString turini yaratish usullari:
// Инициализация №1: odatiy usul
   QString str1 = "The night train"; QString a = "love";       // Инициализация №2: ob’yektli usul
   QString str2("A yellow rose");
      // Инициализация №3 
   std::string s1 = "A blue sky";
   QString str3 = s1.c_str(); 
      // Инициализация №4 
   std::string s2 = "A thick fog";
   QString str4 = QString::fromLatin1(s2.data(), s2.size());
     // Инициализация №5
   char s3[] = "A deep forest";
   QString str5(s3);
Satr elementlariga murojaat
QString sinfining ob'ekti QChar "belgilar" ketma-ketligidir. Satr 
elementlariga [] operatori yoki at() usuli yordamida murojaat qilish mumkin. 
Quyidagi misol QString sinfi ob'ekti bo'lgan satrning individual belgilarini 
chiqaradi:
QString a = "Eagle";
    // Satrning birinchi elementi
    с out << a[0] << endl;
    // Satrning beshinchi elementi
    с out << a[4] << endl;
   // Satrning birinchi elementi at() metodi bilan
   сout << a.at(0) << endl;
Qtda satrlar uchun metod va operatorlar quyidagi jadvalda keltirilgan:
Metod yoki
operator Ma’nosi Misol
= Ta’minlash operatori QString s1 = «abcd»;
QString s1 = «def»; ==,!=,<,>,<=,>= Logik operatorlar s1!=s2;
s1 <s2;
isEppty() Satr bo’shligini tekshirish  s1.isEmpty();
isNull() Satr null ekanligini tekshirish . s1.isNull();
length() Satr uzunligi . s1.length();
+=,+,append() Satrlarni qo’shish,birlashtirish . s1=s1+s2;
s1+=s2;s1.append(s2);
replace() Satr bo’lagini boshqa satr bilan
almashtirish. s1.replace(«ab»,«12»);
toLower(),
toUpper() Satr simvollari registrini(kata
yoki kichik) o’zgartirish. s1.toUpper();
s1.toLower();
setNum(),
number() Sonli qiymatni satrga o’tkazish . s1.setNum(12);
s1 = QString::number(12);
toDouble(),toInt() Satrni songa aylantirish int i = QString(«123»).toInt();
split() Satrni satrchalarga bo ’ lish QStringList l = QString(«asd as
qw qwe awe»).split(« »);
join() Berilgan ro’yxatni satrga
birlashtirish . QList<QString> l;
l<< «as» <<«sd»<<«asd»;
QString s = l.join(« »);
Funksiya Ma’nosi Misol
append Satrga o’ng tomondan satr qo’shish. s="one";
s.append(" two"); // "one two"
clear Satr matnini o’chiradi. isEmpty va isNull bilan
tekshirganda true qaytaradi s.clear();
::compare Satrlarni taqqoslash. Registrni hisobga olish
imkoniyati mavjud. Natija manfiy son bo'ladi,
agar, birinchi satr ikkinchisidan kichik bo'lsa,
nolga teng, satrlar teng bo'lsa, noldan katta,
agar birinchi satr ikkinchi kattaroq bo'lsa. int x =
QString::compare("aUtO
",
"AuTo",Qt::CaseInsensit
ive);    // 0
size Satrdagi simvollar soni s="itmath";
int n=s.size(); //6
contains Agar satr tarkibida berilgan bo’lsa true
qaytaradi.Registr 2-parametr orqali beriladi. s="Abc Def";
s.contains("dEf",
Qt::CaseInsensitive);
//true
indexOf Ushbu satrda satrning birinchi kirish joyining
raqami. Qaysi pozitsiyadan boshlab izlash
kerakligini belgilash mumkin. Satr topilmasa, -
1-ni qaytaradi. s="test line best";
s.indefOf("est"); // 1
s.indexOf("est",5); //10
length Satrdagi simvollar soni s="test"; s.length(); //4
split Satrlarni qismlarga ajratish. Parametr sifatida 
satrini ajratuvchi yoki muntazam ifoda. Bo'sh 
bo'laklarni o'tkazib yuborish haqida aniq 
ma'lumot berish mumkin. Javob sifatida 
ro'yxat qaytaradi.  s="a,,,,,b,c";
QStringList
w=s.split(",",
QString::SkipEmptyPart
s); // ["a","b","c"] Teskari operatsiya: QStringList:: join(QChar 
sep)
fill Berilgan QChar ch belgi bilan satrni to'ldirish.
Agar qo'shimcha ikkinchi parametr int size
berilgan bo'lsa, yangi satr uzunligi berilgan
bo’ladi.  s="math";
s.fill('e',3); //eee
insert Berilgan pozitsiyaga satr qo’shish s="QtStyle";
s.insert(2,"C++");
//QtC++Style
isEmpty Satrning bo’shligini tekshirish QString s;
s.isEmpty(); //true
s=""; s.isEmpty(); //true
s="        "; s.isEmpty();
//false
isNull Satrning inisializatsiya qilinganligini
tekshirish QString s;
s.isNull(); //true
s=""; s.isNull(); //false
s="        "; s.isNull();
//false
prepend Berilgan satr boshiga satr yoki simvol qo’shish s="def";
s.prepend("abc");
//abcdef
remove Satr   qismini   belgilangan   uzunlikdagi
ko ' rsatilgan   pozitsiyadan   olib   tashlash ,  ushbu
belgi   yoki   satrning   barcha   kirishlarini   olib s="example";
s.remove(1,4); //"ele"
s="abcA"; tashlash  ( registrga   sezgirlik   sozlamalarini
hisobga   olgan   holda ) s.remove(QChar('a'),
Qt::CaseInsensitive); //"
bc"
replace Ushbu satrda  berilgan pozitsiyadan
boshlab,berilgan belgilar soni bo’yicha
berilgan satr qismni almashtirish. Barcha
kirishlarni almashtirish uchun yana bir
chaqiruv varianti mavjud. s="It math";
s.replace(3,4,"c+
+"); //"it c++"
resize Satr uzunligini o’zgartirish s="c++ and qt";
s.resize(3); //"c++"
setNum Berilgan sonni satrga aylantirish. Sanoq
tizimning asosini ko’rsatish mumkin (oldindan
o’nlik sanoq tizimi10) s.setNum(2015); //"2015
"
swap Satrlar qiymatini almashtirish s="abc"; w="cde";
s.swap(w);
toDouble satrni double haqiqiy son tipiga o’zgartirish.  s="12.34"; double
d=str.toDouble(); //12.34
toInt Satrni berilgan sanoq sistemasidagi songa
aylantirish (oldindan 10-lik sanoq sistemasiga
o’tkazadi). s="123"; bool flag; int
n=s.toInt(&flag); if
(flag) { //success };
toLower Barcha simvollarni quyi registrga o’tkazish
toUpper Barcha simvollarni yuqori registrga o’tkazish
trimmed Satr boshi va oxiridan probellarni olib tashlash(' ','\t','\n','\v','\f','\r')
truncate Satrdan berilgan simvoldan boshlab oxirigacha
simvollarni olib tashlash s="abcdel";
s.truncate(3); //"abc"
capacity   Berilgan satrda yangi xotira ajratmasdan 
saqlanishi mumkin bo'lgan belgilarning 
maksimal soni   s="a"; 
s.append("a"); //"aa"
int c=s.capacity(); //7
chop   Berilgan belgilar sonini satr oxiridan olib 
tashlang. Agar belgilarning haqiqiy soni 
kamroq bo'lsa, unda natija bo'sh satr bo'ladi.   s="itmath"; 
s.chop(4); //"it"
count   Количество символов в строке (как и 
size()). Количество вхождений данной 
строки.
Satrdagi   belgilar   soni  ( size ()  kabi ).  Ushbu 
satrda berilgan satrning soni.   s="aaab"; int 
c=s.count("aa"); //2
endsWith   Agar satr berilgan satr (yoki belgi) bilan 
tugagan bo'lsa, chin(true) qiymat qaytaradi. 
Registrni hisobga olish mumkin.   s="abcd"; 
s.endsWith("cd"); //true
startsWith   Agar satr berilgan satr (yoki belgi) bilan 
boshlangan bo'lsa, chin(true) qiymat qaytaradi.
Registrni hisobga olish mumkin.   s="abcd"; 
s.startsWith("ab"); //true
left Satrdan chapdan n ta simvolni ajratib beradi.    s="abcd"; 
w=s.left(2); //"ab"
rigth Satrdan o’ngdan n ta simvolni ajratib beradi.   s="abcd";  w=s.right(2); //"cd"
mid Berilgan pozitsiyadan boshlanadigan n 
simvollar satrini qaytaradi. Agar belgilar soni 
ko'rsatilmagan bo'lsa, u holda barcha belgilar 
satr oxirigacha qaytariladi. Agar pozitsiya 
ruxsat etilgan qiymatdan kattaroq bo'lsa, unda 
natija bo’sh satr bo'ladi.   s="abcde"; 
w=s.mid(2,1); //"c"
reserve   Berilgan simvollar soniga mos xotira 
ajratish.Oldindan qancha simvollar kerakligi 
ma’lum bo’lganda ishlatiladi.   s.reserve(200);
repeated   Belgilangan marta satrni ko'paytirilib, satr 
nusxasini qaytaradi.   s="ab"; 
w=s.repeated(2); //"abab
"
section Satrdagi   leksemalar   to ’ plamini  
ajratadi . Dastlab   ajratuvchi   simvol , birinchi  
leksema   nomeri , oxirgi   leksema   nomeri . Agar  
sonlar   manfiy   bo ’ lsa   hisob   oxirgi   leksemadan  
boshlanadi .   s="a,bb,ccc,d"; 
w=s.section(',',1,2); //"bb
,ccc"
simplified   Satr   boshi   va   oxiridan   probelli   simvollarni  (\
t,\n,\v,\r,' ')  olib   tashlash ,  satr   ichidagi   ko ’ plab  
probelli   simvollarni   bitta   probelga  
almashtirish .   s="        one    \n and two\r";
s.simplified(); //s="one 
and two";
lastIndexOf   Номер позиции последнего вхождения 
строки в данную строку. Возвращает -1, 
если строки не найдена. Ushbu satrda berilgan satrning  oxirgi marta 
kirish raqami. Agar satr topilmasa -1 ni 
qaytaradi.
toHtmlEscap
ed   <,>,& va " simvollarni  html-belgilarga(&lt; 
&gt …..) almashtirish
toStdString std::string  ni qaytaradi.
::number   Berilgan   raqamni   satrga   aylantiradi . 
Raqamning   qaysi   sanoq   tizimida   ekanligini  
ko ' rsatish   mumkin .   s=QString::number(123
); //"123"
2. Bir satrli va ko’p satrli vidjetlar.
Satrlarni namoyish qilish elementlari foydalanuvchi harakatlarida faol 
ishtirok etmaydilar va nima bo'layotgani to'g'risida xabar berish uchun ishlatiladi. 
Ushbu ma'lumot matnli yoki grafik xarakterda bo'lishi mumkin (rasmlar, 
grafikalar).
Yozuvlar
Yozuv vidjeti - ilovaning holatini yoki tushuntirish matnini ko'rsatish uchun
ishlatiladi   va   foydalanuvchi   tomonidan   o'zgartirilishi   mumkin   bo'lmagan   matn
maydoni   hisoblanadi.   Ushbu   vidjet   tomonidan   ko'rsatilgan   ma'lumotlar   faqat
dasturning   o'zi   tomonidan   o'zgartirilishi   mumkin.   Shu   tarzda,   dastur
foydalanuvchini   yozuvning   o'zgargan   holati   to'g'risida   xabardor   qilishi   mumkin,
ammo   foydalanuvchi   ushbu   ma'lumotni   vidjetning   o'zida   o'zgartira   olmaydi.
QLabel   o’zgarmaydigan   yozuv   vidjetining   klassi   QLabel   sarlavha   faylida
aniqlangan. QLabelni asboblar panelidan olish uchun, Displey vidjetlari bo’limiga
o'ting va QLabel-ni tanlang va loyiha oynasiga tortib o’tkazing(43-rasm). 43-rasm
Yozuv vidjeti QFrame sinfi vorisi bo'lib, chegaraga ega bo'lishi mumkin. U
orqali   ko'rsatiladigan   ma'lumotlar   matnli,   grafik   yoki   animatsion   xarakterga   ega
bo'lishi   mumkin,   ularni   uzatish   uchun   setText(),   setPixmap()   va   setMovie()
metodlari   ishlatiladi.Yozuvdagi   matnning   o'rnini   setAlignment()   usuli   yordamida
boshqarish   mumkin.   Ushbu   usul   ko'plab   qiymatlardan   foydalanadi,   ularning
ba'zilari   quyidagi   jadvalda   keltirilgan.   E'tibor   bering,   qiymatlar   bir-biriga   mos
kelmaydi   va   ularni   bir-birlari   bilan   mantiqiy   operatsiyadan   foydalanib
birlashtirishga   imkon   beradi   |   (YOKI).   AlignVCenter   va   AlignHCenter
qiymatlaridan   tashkil   topgan   AlignCenter   qiymati   bunga   yaxshi   misol   bo'lishi
mumkin.
2-Jadval . Alignment   Flag  qiymatlari
Konstanta nomi Qiymati Izoh 
AlignLeft 0x0001 Matnni chap tomonda joylash
AlignRight 0x0002 Matnni o’ng tomonda joylash
AlignHCenter 0x0004 Matnni gorizontal bo’yicha o’rtaga joylash AlignJustify 0x0008 Matnni butun kenglik bo’yicha yoyish
AlignTop 0x0010 Matnni yuqori tomonda joylash
AlignBottom  0x0020  Matnni past tomonda joylash
AlignVCenter  0x0040  Matnni vertikal bo’yicha o’rtaga joylash
AlignCenter  AlignVCent
er |
AlignHCent
er  Matnni gorizontal va vertical bo’yicha
o’rtaga joylash
Quyidagi rasmdan ko'rinib turibdiki, yozuv vidjeti nafaqat oddiy matnni, balki 
HTML formatidagi matnli ma'lumotlarni ham ko'rsatishi mumkin (HyperText 
Markup Til, gipermatn belgilash tili). Ushbu misolda HTML-da matn, jadval va 
rasmni ko'rsatish uchun foydalangan.
#include <QtGui>
int main(int argc, char** argv)
{
QApplication app(argc, argv);
QLabel lbl("<H1><CENTER>QLabel — HTML 
Demo</CENTER></H1>"
"<H2><CENTER>Image</CENTER><H2>"
"<CENTER><IMG BORDER=\"0\" 
SRC=\"img.jpg\"></CENTER>"
"<H2><CENTER>List</CENTER><H2>"
"<OL><LI>One</LI>"
" <LI>Two</LI>"" <LI>Three</LI>" "</OL>"
"<H2><CENTER>Font Style</CENTER><H2>"
"<CENTER><FONT COLOR=RED>"
" <B>Bold</B>, <I>Italic</I>, <U>Underline</U>" "</FONT></CENTER>"
"<H2><CENTER>Table</CENTER></H2>"
"<CENTER> <TABLE>"
" <TR BGCOLOR=#ff00ff>"
" <TD>1,1</TD><TD>1,2</TD><TD>1,3</TD><TD>1,4</TD>"" </TR>"
" <TR BGCOLOR=YELLOW>"
" <TD>2,1</TD><TD>2,2</TD><TD>2,3</TD><TD>2,4</TD>"" </TR>"
" <TR BGCOLOR=#00f000>"
" <TD>3,1</TD><TD>3,2</TD><TD>3,3</TD><TD>3,4</TD>"" </TR>"
"</TABLE> </CENTER>"
);
lbl.show();
return app.exec(); 
Matnni kiritish elementlari
Matnni kiritish vidjetlari guruhi foydalanuvchiga matn va raqamli 
ma'lumotlarni kiritish va tahrirlash uchun asosiy element hisoblanadi.Kiritish 
elementlarining aksariyati almashish beferi bilan ishlashi va "drag & drop" 
texnologiyasini qo'llab-quvvatlashi mumkin, bu esa dasturchini qo'shimcha 
amallarni bajarishdan saqlaydi. Undagi matnni sichqoncha, klaviatura va kontekst 
menyusi yordamida tanlash,belgilash mumkin.
Bir qatorli matn vidjeti
Ushbu vidjet eng oddiy kiritish elementidir. Bitta qatorli matn vidjeti 
QLineEdit klassi QLineEdit sarlavha faylida aniqlangan.
Uni asboblar panelidagi “input vidjets” bo’limidan loyihaga joylashtirish 
mumkin(44-rasm). 44-rasm
Vidjetdagi matnni  text()  metodi chiqaradi. Agar vidjet matnni o’zgarsa yoki 
tahrirlansa  textChanged()  signali jo’natiladi.  returnPressed()  signali 
<Enter>tugmasi bosilganini bildiradi.  setReadOnly()  metodi  true  parametric bilan 
ishlatilganda "faqat o’qish" rejimi yoqiladi, bunda foydalanuvchi matnni faqat 
ko’ra oladi,lekin o’zgartira olmaydi. setText() metodi yordamida vidjet matni 
kiritiladi.
Bir satrli maydon vidjeti matnini ko’rinmaydigan - parol kiritish rejimiga 
o’tkazish uchun  setEchoMode()  metodining  Password  qiymatidan foydalanladi. 
Bunda maydonga kiritilgan matn o’rniga * simvoli ko’rinadi.
QLineEdit vidjeti matn satrini kiritish uchun to'rtburchaklar maydondan 
iborat, shuning uchun bir nechta satrli matnni kiritishingiz kerak bo'lganda ushbu 
vidjetdan foydalanmaslik kerak. QTextEdit va QPlainTextEdit sinflari ko'p satrli 
matn kiritish uchun mo’ljallangan.
QTextEdit klassi oddiy matnni ham, HTML matnini ham ko'rish va tahrirlash 
imkoniyatini beradi. Bu sinf QAbstractScrollArea sinfidan meros olingan bo'lib, 
matn ajratilgan qismida to'liq namoyish etilmasa, aylantiruvchi 
tugma(ScrollBar)larni avtomatik ravishda ko'rsatishga imkon beradi. Agar siz oddiy matn uchun muharrirga muhtoj bo'lsangiz, QTextEdit sinfi 
o'rniga QPlaintTextEdit sinfidan foydalanish maqsadga muvofiqdir. 
QPlaintTextEdit klassi Rich Text Format (RTF) -ni qo'llab-quvvatlamaydi, bu esa 
uni yanada engil, sodda va samaraliroq qiladi.
Vidjet maydoniga oddiy matnni qo'yish uchun  setPlainText()  usuli yoki 
insertPlainText()  slotini ishlatish mumkin.  append()  sloti matn qo'shish uchun 
ishlatiladi va qo'shilgan matn  undo()  sloti yordamida qaytarilishi mumkin bo'lgan 
operatsiyalar ro'yxatiga kiritilmagan, bu esa ushbu slotni tezkorroq qiladi va 
qo'shimcha xotira xarajatlarini talab qilmaydi. Matnda berilgan satrni topish va 
belgilash uchun  find()  usulidan foydalanish mumkin.
QTextEdit klassining quyidagi usullari mavjud:
 setReadOnly() matn uchun faqat o’qish rejimini yoqadi yoki o’chiradi;
 text ()  joriy matnni ifodalaydi .
Quyidagi slotlari mavjud :
 setPlainText () —  oddiy matn kiritish ;
 setHtml() —HTML formatidagi matnni kiritish;
 copy(), cut() va paste() — almashish buferi bilan ishlash (mos ravishda
nusxalash, qirqib olish va qo’yish);
 selectAll()   yoki   deselect()   —   butun   matnni   belgilash   yoki   belgilashni
olib tashlash;
 clear () —  maydonni tozalash .
Quyidagi xodisa(signal)lari mavjud:
 textChanged() — matn o’zgarganda sodir bo’ladi;
 selectionChanged() — matn belgilashlari o’zgarganda sodir bo’ladi.
QPlainTextEdit - bu oddiy matnni qo'llab-quvvatlaydigan rivojlangan 
ko'rsatuvchi / muharrir. Katta hujjatlarni qayta ishlash va foydalanuvchilarning 
tezkor javoblari uchun optimallashtirilgan.
QPlainText QTextEdit bilan bir xil texnologiyalar va tushunchalardan 
foydalanadi, ammo oddiy matn bilan ishlash uchun optimallashtirilgan. QPlainTextEdit paragraflar va belgilar ustida ishlaydi. Paragraf - bu 
vidjetning kengligiga mos keladigan so'z bilan o'ralgan formatlangan satr. 
Oddatda, oddiy matnni o'qiyotganda bitta yangi satr paragrafni bildiradi. Hujjat nol
yoki undan ortiq paragraflardan iborat. Paragraflar qattiq chiziqlar bilan ajratilgan. 
Paragrafdagi har bir belgi shrift va rang kabi o'ziga xos xususiyatlarga ega.
3. Satrli ma’lumotlarni bezash. 
Stillar jadvallari-barcha ilovalar uchun QApplication::setStyleSheet() yoki 
QWidget::setStyleSheet() orqali ma'lum bir vidjet (va uning avlodlari) uchun 
o'rnatilishi mumkin bo'lgan matnli xususiyatlardir. Agar turli darajalarda bir nechta
uslublar jadvallari o'rnatilgan bo'lsa, Qt barcha o'rnatilgan uslublar jadvallaridan 
samarali uslublar jadvalini yaratadi. Bunga kaskadlash deyiladi.
Misol uchun, quyidagi uslublar jadvali barcha QLineEdit maydonlarini fon 
sifatida sariq rang sifatida ishlatishi kerakligini ta’minlaydi va barcha QCheckbox 
obyektlari matn rangi sifatida qizildan foydalanishi kerakligini o’rnatadi:
QLineEdit { background: yellow }
QCheckBox { color: red }
Stillar   jadvallari   faqat   QPalette   yordamida   amalga   oshirish   qiyin   yoki
mumkin   bo'lmagan   barcha   turdagi   sozlamalarni   amalga   oshirish   imkonini   beradi.
Agar   siz   majburiy   joylar   uchun   sariq   fonni   olishni   istasangiz,   potentsial   xavfli
tugmalar   yoki   odatiy   tugma   uchun   qizil   matnni   o’rnatmoqchi   bo’lsangiz   stillar
jadvallari bunga yordam beradi.
Stillar   jadvallari   joriy   vidjetlarning   yuqori   qismida   qo'llaniladi,   ya'ni
ilovalaringiz   iloji   boricha   tabiiy   ko'rinadi,   ammo   uslublar   jadvalining   har   qanday
cheklovlari   hisobga   olinadi.   Yaroqsiz   palitradan   farqli   o'laroq,   stillar   jadvallari
quyidagilarni ta'minlaydi: Agar siz QPushButton uchun qizil fon rangini o'rnatgan
bo'lsangiz,   tugma   fonining   barcha   uslubda,   barcha   platformalarda   qizil   bo'lishiga
ishonch   hosil   qilishingiz   mumkin.   Bundan   tashqari,   Qt   Designer   uslublar
jadvallarini integratsiyalashni ta'minlaydi, bu esa turli xil vidjet uslublarida ulardan
foydalanish samarasini ko'rishni osonlashtiradi. Bunga   qo'shimcha   ravishda,   stillar   jadvallari   QStyle   kichik   sinflarini
ishlatmasdan   sizning   ilovangizga   o'ziga   xos   ko'rinish   berish   uchun   ishlatilishi
mumkin.   Masalan,   siz   radio   tugmachalari   uchun   maxsus   rasmlarni   o’rnatishingiz
va   ularni   belgilangan   holati     uchun   boshqa   tasvirlarni   joylashtirishigiz   mumkin.
Ushbu   texnikadan   foydalangan   holda,   siz   odatda   stillar   ko'rsatmalari   kabi   bir
nechta   uslublar   sinflarida   meros   olishni   talab   qiladigan   kichik   o'zgarishlarni
amalga oshirishingiz mumkin. Quyidagi rasmda ko'rsatilgan stillar jadvallari ikkita
turli   xil   uslub   jadvallarini   aniqlaydi,   ularni   sinab   ko'rishingiz   va   o'zgartirishingiz
mumkin.
                                             
Stillar to'plami har qanday faol uslublar jadvali hisobga olinishini ta'minlaydi 
va boshqa tasvirchizish operatsiyalari platformalarga qaram bo'lgan uslubni 
aniqlaydi.
4. Ro’yxatli vidjetlar.
Tanlov elementlari ma'lumotlarni ko'rsatish, o'zgartirish va tanlash uchun 
standart grafik elementlar hisoblanadi.
Oddiy ro'yxat
QListwidget   klassi   foydalanuvchini   bitta   yoki   bir   nechta   elementni   tanlash
imkoniyatini   beruvchi   ro'yxat   vidjetidir.   Ro'yxat   elementlari   matn   va   rastr
tasvirlarni o'z ichiga olishi mumkin. Ro'yxatga elementni qo'shish uchun  additem()
usulini ishlatish kerak. Ushbu usulning ikkita variantini bor: QListWidgetItem matn va sinf ob'ekti
uchun.   Agar   ro'yxatdagi   barcha   elementlarni   olib   tashlash   kerak   bo'lsa,   clear()
metodidan foydalanish kerak.
QListWidgetItem-   sinfi   ro'yxat   elementlari   uchun   sinf   hisoblanadi.   Ushbu
sinflarning   ob'ektlari,   masalan,   matnni   QListWidget::addItem() .   usuliga   uzatishda
bevosita   yaratilishi   mumkin.Shuni   ta'kidlash   kerakki,   QListWidgetItem   klassi
nusxa   ko'chirish   konstruktorini   taqdim   etadi,   bu   esa   elementlarning   nusxalarini
yaratishga   imkon   beradi.   Bundan   tashqari,   bu   maqsadda   clone()   usulidan
foydalanishingiz mumkin.
Ro’yxat Elementlarini kiritish
Bir   vaqtning   o'zida   bir   nechta   matn   elementlarini   ro'yxatga   bir   qatorga
qo'shib qo'yish mumkin, bunda satrlarning ro'yxatini o'z ichiga olgan QStringList-
ni   InsertItems()   usulidan   foydalaniladi.   Matn   elementini   yaratish   uchun   siz
InsertItem()   usulidan   foydalanish   mumkin,   faqat   parameter   sifatida   satr   berilishi
kerak.   QListWidgetItem   ob'yekti,   shuningdek,   insertItem()   usuli   yordamida
ro'yxatga kiritilishi mumkin. U   addItem()   usulidan qo'shiladigan elementning aniq
o'rnini ko’rsatish mumkinligi bilan farq qiladi.Yaratilgan elementga ro'yxat ob'ekti
QListWidgetItem::setIcon()   usuli   yordamida   qo’shiladigan   elementga   rasm
o’rnatiliishi mumkin.
Shunisi   e'tiborga   loyiqki,   ro'yxat   elementlarida   nafaqat   rasmlar   va   matnlar,
balki   vidjetlar   ham   o'rnatilishi   mumkin.   Buning   uchun   QListWidget   klassining
setItemWidget()   va   itemWidget()   usullaridan   foydalansa   bo’ladi.   SetItemWidget()
usulining   birinchi   parametri   ro'yxat   ob'ekti   ob'ektiga   ko'rsatgichni,   ikkinchisi   -
vidjetga   ko'rsatgichni   o'tkazish   kerak.   Ro'yxat   elementida   joylashgan   vidjetga
ko'rsatgichni   olish   uchun,   elementni   listWidget()
usuliga ro'yxat elementi ob'ektiga o'tkazish kerak.
Operatsion tizimlarning ro'yxatini 
ko'rsatadigan oddiy ro'yxatni ishlatishga misol 
quyida keltirilgan(45-rasm).
#include <QtGui> int main(int argc, char** argv)
{
QApplication app(argc, argv);
QStringList lst;
QListWidget lwg;
QListWidgetItem* pitem = 0;
lwg.setIconSize(QSize(48, 48));
lst << "Linux" << "Windows" << "MacOS" << "OS2";
foreach(QString str, lst) {
pitem = new QListWidgetItem(str, &lwg);
pitem->setIcon(QPixmap(str + ".jpg"));
}
lwg.resize(125, 175);   lwg.show();  return app.exec();
                                                              }
Oddiy ro'yxat vwget lwg yaratildi.Ro'yxat vidjetining  setIconSize()  usuli 
elementlarning rasmlari uchun hajmni belgilaydi. Keyin lst satrlari ro'yxati 
elementlar uchun matnlar bilan to'ldiriladi. Ushbu ro'yxatga foreach operatori 
yordamida elementlar yaratamiz va qo'shamiz. SetIcon() usuli bilan har bir element
uchun tasvir o'rnatiladi.
Ro’yxat elementlarini tanlash
QListWidget :: currentItem()  usuli yordamida foydalanuvchi qaysi elementni
tanlaganligini   bilib   olish   mumkin,   u   tanlangan   elementga   ko'rsatgichni   qaytaradi.
Agar bir nechta element  tanlangan bo'lsa, u holda tanlangan elementlar ro'yxatini
qaytarib   beradigan   selectedItems()   usulidan   foydalanish   kerak.   Ko'p   tanlov
rejimini   yoqish   uchun   QAbstractItemView   bazasida   amalga   oshiriladigan
setSelectionMode()  usuliga  QAbstractItemView::MultiSelection  qiymatini o'rnatish
kerak. Boshqa qiymatlarni berib, masalan, tanlovni butunlay o'chirib qo'yish uchun
QAbstractItemView::NoSelection -ni   qiymatni   va   faqat   bitta   elementni belgilaydigan   qilish   uchun   -   QAbstractItem::SingleSelection -ni   parameter   sifatida
ishlatish kerak. 
Ro'yxat   elementi   ustida   sichqoncha   bosilganda   itemClicked()   signali
yuboriladi.   Ikki   marta   bosilganda,   itemDoubleClicked()   signali   QListWidgetItem*
parametri   bilan   yuboriladi.   Har   safar   tanlov   o'zgarganda,   itemSelectionChanged()
signali yuboriladi.
Foydalanuvchi tomonidan elementlarni o'zgartirish
Foydalanuvchiga   elementning   matnini   o'zgartirishga   imkon   berish   uchun
QListWidgetItem::setFlags()   usuliga   kerakli     ob'ektidan   murojaat   qiling   va   unga
Qt::ItemIsEditable  qiymatini va boshqa kerakli qiymatlarni bering. Misol uchun:
pitem->setFlags(Qt::ItemIsEditable|Qt::ItemIsEnabled);
Qayta nomlash ro'yxat elementini ikki marta bosish yoki <F2> tugmachasini
bosish orqali amalga oshiriladi. Qayta nomlash tugagach, QListWidget elementni 
o'zgartirilgan (QListWidgetItem*) va itemRenamed (QListWidgetItem *) 
signallarini yuboradi.
5. Saralash algoritmlarini satrli vidjetlarda qo’llash.
Elementlarni tartiblash
Ro'yxat   elementlari   sortItems()   usuli  orqali   tartibga  solinishi  mumkin.  Ushbu
usulga     Qt::AscendingOrder   qiymati   berilganda   elementlarni   saralash   o’sish
tartibida   amalga   oshiriladi   va   Qt::descendingorder-kamayish   tartibini   belgilaydi.
Biroq, agar tartiblashni amalga oshirgandan keyin yangi elementlar qo'shilsa, ular
tartiblanmaydi. Saralash alifbo tartibida amalga oshiriladi, agar sana yoki raqamli
qiymat bo'yicha tartiblash kerak bo'lsa, unda QListwidgetitem elementining sinfini
meros qilib olish va unda  operatorni<()  yozish kerak.
Elementlarni   tartiblashni   vidjetni   oynaga   qo’yilgandan   so'ng   sortingenabled
xususiyatidan foydalanib yoqilishi mumkin.             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: Dasturlash muhitida satrli ma’lumotlarni yaratish usullari. Reja: 1.Bir satrli va ko’p satrli vidjetlar. 2.Satrli ma’lumotlarni bezash. 3.Ro’yxatli vidjetlar. 4.Saralash algoritmlarini satrli vidjetlarda qo’llash. 5.Qt dasturlash muhitida satrlar bilan ishlash operatorlari.

1. Qt dasturlash muhitida s atrlar bilan ishlash operatorlari. 1. Qt da o’zgaruvchilarning quyidagi tiplari mavjud: Qt tipi C++ dagi ekvivalenti Bitlardagi o’lchami qint8 signed char 8 quint8 unsigned char 8 qint16 short 16 quint16 unsigned short 16 qint32 int 32 quint32 unsigned int 32 qint64 __int64 yoki long long 64 quint64 unsigned __int64 yoki unsigned long long 64 qlonglong qint64 ning boshqa ko’rinishi 64 qulonglong quint64 ning boshqa ko’rinishi 64 qreal Double ning boshqa ko’rinishi 64 uchar unsigned char ning boshqa ko’rinishi 8 Oldindan o’rnatilgan qoidalarga asosan short, int, long va long long tiplari ishorali tiplar,ya’ni ular xam manfiy xam musbat qiymatlar qabul qilishi mumkin.

Agarda faqat musbat qiymatlarni qabul qiluvchi o’zgaruvchilar yaratishda unsigned (ishorasiz) kalit so’zidan foydalaniladi. Agar short tipi —32,768 va +32,767 oraliqdagi qiymatlarni qabul qilsa, unsigned short tipi faqat 0 dan 65 535 gacha bo’lgan oraliqdagi qiymatlarni qabul qilishi mumkin. Bool turi chin(true) yoki yolg'on(false) qiymatli bo'lishi mumkin. Bundan tashqari, bool o'rniga raqamli turlardan foydalanish mumkin; bu holda 0 yolg’on(false) va noldan farqli har qanday qiymat chin(true) bo'ladi. Char turi ASCII belgilarini va 8 bitli butun sonlarni (bayt) saqlash uchun ishlatiladi. Ushbu maydondagi butun son, platformaga qarab, ishoraga ega bo’lishi yoki ega bo’lmasligi mumkin.Qt 16-bitli Unicode belgilarini saqlaydigan QChar turini taqdim etadi. Xotirada raqamli turlar (longdan tashqari) Qt tomonidan qo'llab- quvvatlanadigan turli platformalarda bir xil o'lchamlarga ega, ammo ularning namoyishi tizimning bayt tartibiga qarab o'zgaradi. Qt-da QStrings bilan ishlash uchun. • # Fayl boshiga <QString> satrini qo’shish shart; • QString elementlari QChar belgilar turiga kiradi. Satrni qiymat belgilash uchun = operatoridan foydalanishingiz mumkin. • Satrlarni ==, <=,> =,! =,>, < lardan foydalanib taqqoslash mumkin. Natija satr tarkibidagi harflarga bog'liq. • Elementga [] yoki .at (indeks) yordamida murojaat qilish mumkin. Index noldan boshlanadi. • Satrlarni qo’shish uchun +, + = dan foydalanishin mumkin. QString klassi odatiy satrni 16 bitli QChar qiymatlari sifatida saqlaydigan Unicode satrini ifodalaydi, bu erda har bir QChar Unicode 4.0 belgilariga mos keladi. Boshqa ko'plab dasturlash tillaridagi satrlardan farqli o'laroq, QString o'zgartirilishi mumkin. QString turini yaratish usullari: // Инициализация №1: odatiy usul QString str1 = "The night train"; QString a = "love";

// Инициализация №2: ob’yektli usul QString str2("A yellow rose"); // Инициализация №3 std::string s1 = "A blue sky"; QString str3 = s1.c_str(); // Инициализация №4 std::string s2 = "A thick fog"; QString str4 = QString::fromLatin1(s2.data(), s2.size()); // Инициализация №5 char s3[] = "A deep forest"; QString str5(s3); Satr elementlariga murojaat QString sinfining ob'ekti QChar "belgilar" ketma-ketligidir. Satr elementlariga [] operatori yoki at() usuli yordamida murojaat qilish mumkin. Quyidagi misol QString sinfi ob'ekti bo'lgan satrning individual belgilarini chiqaradi: QString a = "Eagle"; // Satrning birinchi elementi с out << a[0] << endl; // Satrning beshinchi elementi с out << a[4] << endl; // Satrning birinchi elementi at() metodi bilan сout << a.at(0) << endl; Qtda satrlar uchun metod va operatorlar quyidagi jadvalda keltirilgan: Metod yoki operator Ma’nosi Misol = Ta’minlash operatori QString s1 = «abcd»; QString s1 = «def»;

==,!=,<,>,<=,>= Logik operatorlar s1!=s2; s1 <s2; isEppty() Satr bo’shligini tekshirish s1.isEmpty(); isNull() Satr null ekanligini tekshirish . s1.isNull(); length() Satr uzunligi . s1.length(); +=,+,append() Satrlarni qo’shish,birlashtirish . s1=s1+s2; s1+=s2;s1.append(s2); replace() Satr bo’lagini boshqa satr bilan almashtirish. s1.replace(«ab»,«12»); toLower(), toUpper() Satr simvollari registrini(kata yoki kichik) o’zgartirish. s1.toUpper(); s1.toLower(); setNum(), number() Sonli qiymatni satrga o’tkazish . s1.setNum(12); s1 = QString::number(12); toDouble(),toInt() Satrni songa aylantirish int i = QString(«123»).toInt(); split() Satrni satrchalarga bo ’ lish QStringList l = QString(«asd as qw qwe awe»).split(« »); join() Berilgan ro’yxatni satrga birlashtirish . QList<QString> l; l<< «as» <<«sd»<<«asd»; QString s = l.join(« »); Funksiya Ma’nosi Misol append Satrga o’ng tomondan satr qo’shish. s="one"; s.append(" two"); // "one