logo

Dastur tarkibida grafik va multimedia ob’yektlari

Загружено в:

08.08.2023

Скачано:

0

Размер:

176.208984375 KB
Mavzu:  Dastur tarkibida grafik va multimedia ob’yektlari
Reja:
1.   Dastur   tarkibiga   rasm   va   tasvirlarni   joylashtirish.   Qt   dasturlash   muhiti   grafik
imkoniyatlari.
2. Qt dasturlash muhitida multimedia vidjetlari,ularning xossa va hodisalari.
3. Multimedia ob’yektlarini dasturga qo’shish usullari.
  1. Grafik ob’ektlar bilan ishlash.
Nuqta,   ikki   o'lchovli   o'lchovlar,   to'rtburchaklar   kabi   geometriya   darslari,
shuningdek, rang qiymatlarini saqlash uchun maxsus  sinflar ko'pincha kompyuter
grafikalarini dasturlash uchun ishlatiladi.
Nuqta
Ikki   o'lchovli   koordinatalar   tizimidagi   nuqtalarni   aniqlash   uchun   ikkita   sinf
ishlatiladi: QPoint va QPointF .Ikki o'lchovli koordinatalar tizimida nuqta X va Y
raqamlari   juftligi   bilan   ifodalanadi,   bu   erda   X   gorizontal   va   Y   vertikaldir.
Koordinata   o'qlarining   odatdagi   tartibidan   farqli   o'laroq,   Qt   nuqtaning
koordinatalarini belgilashda odatda Y o'qi pastga yo'naltirilgan deb taxmin qilinadi
(7-rasm). QPoint klassi butun koordinatali nuqta, QPointF esa haqiqiy koordinatali
tasvirlaydi   .   Ikkala   sinfning   interfeysi   bir   xil,   u   usullarni   o'z   ichiga
oladi,koordinatalar bilan turli xil operatsiyalarni bajarishga imkon beradi, masalan,
boshqa   nuqtaning   koordinatalari   bilan   qo'shish   va   olib   tashlash.   Nuqtalarni
qo'shganda / chiqarganda ularning X va Y koordinatalarini juftlik bilan qo'shish  /
ayirish amalga oshiriladi.7-rasmda keltirilgan misol ikkita nuqtani qo'shadi: pt 1 va
pt 2.
QPoint pt1 ( 10, 20);
QPoint pt2 ( 20, 10);
QPoint pt3; / / ( 0, 0)
pt 3 = pt 1 + pt 2;
Nuqta   ob'ektlarini   ko'paytirish   va   raqamlarga   bo'lish   mumkin.   Masalan;   misol
uchun:
QPoint pt (10, 20); pt * = 2; // pt = (20, 40)
Nuqtaning ( X , Y ) koordinatalarini olish uchun x () va y () usullari mos ravishda
amalga   oshiriladi   .   SetX   ()   va   setY   ()   usullari   yordamida   nuqta   koordinatalari
o'zgartiriladi .
Qiymatlarini   o'zgartirish   uchun   nuqta   koordinatalariga   havolalar   olishingiz
mumkin. Masalan; misol uchun:
QPoint pt ( 10, 20);
pt . rx ( ) + = 10; // pt = (20, 20)
Nuqta moslamalarni  bir-biri bilan == (teng) va ! = ( teng emas ). Masalan;  misol
uchun:
QPoint pt 1 ( 10, 20);
QPoint pt 2 ( 10, 20);
bool b = ( pt 1 == pt 2); // b = rost
Agar   X   va   Y   koordinatalarining   nolga   tengligini   tekshirish   zarur   bo'lsa,   u   holda
usul chaqiriladi
isNull ( ). Masalan :
QPoint pt ; // (0, 0)
bool b = pt.isNull (); // b = rost ManhattanLength   ()   usuli   X   va   Y   koordinatalarining   absolyut   qiymatlari
yig'indisini qaytaradi . Masalan; misol uchun:
QPoint pt ( 10, 20);
int n = pt.manhattanLength (); // n = 10 + 20 = 30
To'rtburchak
QRect va QRectF sinflari mos ravishda to'rtburchaklar maydonlarning tamsayı
va   haqiqiy   koordinatalarini   (nuqta   va   o'lcham)   saqlash   uchun   ishlatiladi   .   Siz
to'rtburchaklar   maydonni   o'rnatishingiz   mumkin   ,   masalan,   konstruktorga   nuqta
(yuqori chap burchak) va o'lchamni o'tkazish orqali . Mintaqa,
rasmda ko'rsatilgan . 8 quyidagi satrlar yordamida yaratilgan:
QPoint pt ( 10, 10);
QSize hajmi ( 20, 10);
QRect r ( pt , hajmi);
X   ()   yoki   y   ()   usullaridan   foydalanib   to'rtburchakning   chap   tomonidagi   X
koordinatalarini   yoki   tepaning   Y   qismini   olish   mumkin   .   Bu   koordinatalarini
o'zgartirish uchun, foydalanish setX () va setY () usullari .
Hajmi QSize sinfining ob'ektini qaytaradigan size () usuli yordamida olinadi .
Siz   shunchaki   o'lcham   komponentlarini   qaytaradigan   usullarni   chaqirishingiz
mumkin - width () va height (). Siz setSize () usuli va uning har bir tarkibiy qismi -
setWidth   ()   va   setHeight   ()   usullaridan   foydalanib   o'lchamini   o'zgartirishingiz
mumkin . To'g'ri chiziq
QLine   va   QLineF darslari   bir to'g'ri chiziq yoki ko'proq to'g'ri, to'liq son va real
koordinatalarini   bir   samolyotda   bir   segment   tasvirlab.   Boshlang'ich   nuqtaning
holatini   x   1   ()   va   y   1   ()   usullari   yordamida   ,   oxirgisi   -   x   2   ()   va   y   2   ()   yordamida
olish mumkin.   Shunga o'xshash natijaga   sinf ob'ektlarini qaytaradigan   p   1 () va   p   2
()   murojaatlari orqali erishish mumkin
QPoint   /   QPointF   ilgari   tasvirlangan.   Dx   ()   va   dy   ()   usullari   chiziqning
gorizontal va vertikal proyeksiyalarini   mos ravishda   X   va   Y o'qlariga   qaytaradi   .   8-
rasmda ko'rsatilgan to'g'ri chiziq bitta satr kodi bilan yaratilishi mumkin:
QLine   liniyasi   (   10, 10, 30, 20);
Ikkala   sinf   QLine   va   QLineF   taqqoslash   operatorlarini   ==   ,!   =   va   boshlang'ich
va   tugash   nuqtalari   o'rnatilmagan
bo'lsa,   mantiqiy   haqiqatni   qaytaradigan   isNull   ()   usuli   .
Rang
Siz   ko'rgan   ranglar   turli   xil   elektromagnit   chastotalarga   ega   bo'lgan   yorug'lik
ta'siridan   vizual   tuyg'u   sifatida   qabul   qilingan   moddiy   olamdagi   narsalarning
xususiyatidan   boshqa   narsa   emas.   Darhaqiqat,   inson   ko'zi   ushbu   chastotalarning
juda   kichik   diapazonini   idrok   etishga   qodir.   Ko'z   sezadigan   eng   yuqori   chastotali
rang   binafsha   rangga,   eng   pasti   esa   qizil   rangga   ega.   Ammo   bunday   kichik
diapazonda ham millionlab ranglar mavjud.   Shu bilan birga, inson ko'zi 10 mingga
yaqin turli xil rang soyalarini sezishi mumkin. Rangli model - bu barcha ko'rinadigan ranglarni belgilaydigan uch o'lchovli yoki
to'rt   o'lchovli   koordinatalar   tizimidagi   spetsifikatsiya.   In   Qt   -   uch   rangli   modellar
qo'llab-quvvatlaydi   RGB   (   Red   ,   Green   ,   Blue   -   qizil,   yashil,
ko'k),   CMYK   (   Cyan   ,   Platon hisoblanadi   ,   sariq   va   Key   rang   -  ko'k,  qizil, sariq  va
"kalit" rang) va   HSV   (   rang   ,   to'yinganlik   ,   qiymat   -
rang, to'yinganlik, qiymat).
Class   Q   С   olor
QColor   klassi   RGB   va   HSV   ranglarini   saqlaydi   .   Uning   ta'rifi   QColor   sarlavha
faylida   .   QColor   sinf   imkoniyatlarini   ==   va   !   Operatorlari   yordamida   taqqoslash
mumkin   .   =, nusxalarini tayinlash va yaratish.
QPainter   sinfi
QPainter   sarlavhasi   faylida   aniqlangan   QPainter   sinfi   rasm   chizish   buyruqlarini
bajaruvchisi   hisoblanadi.   Unda   chiziqlar,   to'rtburchaklar   ,   doiralar   va
boshqalarni   aks ettirishning ko'plab  usullari  mavjud   . Chizma meros  qilib olingan
sinflarning barcha ob'ektlarida bajariladi.
QPaintDevice   klassi   (18.3-rasm).   Bu   shuni   anglatadiki,   bitta   ob'ektning
chizilgan   kontekstida   ko'rsatiladigan   narsa   boshqa   ob'ektning   kontekstida   xuddi
shu tarzda ko'rsatilishi mumkin.
QPainter   ob'ektidan foydalanish uchun uni   chizish   kerak bo'lgan kontekst ob'ekti
manzilini   topshirishingiz   kerak.   Ushbu   manzil   konstruktorda
ham,   QPainter   ::   begin   ()   usuli   yordamida   ham   o'tkazilishi
mumkin   .   Ma'nosi   boshlanadi   ()   usuli   bu   siz   ko'p   ob'ektlar   bilan   bir   xil   nuqtai
nazardan   chizish   uchun   ruxsat   beradi,   deb   QPainter   sinf   .   Foydalanish
paytida   boshlanadi   ()   usuli,   siz   murojaat   qilish   kerak   QPainter   ::   end   ()   siz
kontekstida   bilan   tayyor   ishlaymiz   qachon   usuli   chizilgan   matn   bu   usul   bilan
belgilangan ulanishni ajratib uchun yana bir ob'ekt chizish qobiliyatini berib.  
2.   Multimedia   vidjetlar   yilda   Qt   atrof-muhit,   dasturiy   ,   xususiyatlari   va
hodisalarni   .  
Grafik   vidjetlar
Class   QGraphicsScene   nafaqat   grafik   joylashtirish   imkoniyatini   beradi,
balki   Widget'lar   va   elementlari   sifatida   joylashtirilgan   voqealar   mexanizmi
orqali   vidjet   ularning   faoliyati   mahrum   va   harakatlari   javob
emas   foydalanuvchi   uchun,   AA   muntazam   vidjet   .   Biroq,   eng   qiziqarli   xususiyat
shundaki,   vidjet   sahna   elementiga   aylangandan   so'ng,   siz   u   bilan   oddiy   grafik
elementlarda bo'lgani kabi bir xil geometrik o'zgarishlarni amalga oshirishingiz va
to'qnashuvlarni   aniqlash   mexanizmidan   foydalanishingiz   mumkin.   Bu   tasavvur
qilish uchun juda ko'p joylarni ochib beradi - endi siz juda noodatiy foydalanuvchi
interfeyslarini   amalga   oshirishingiz   mumkin.   Keling,   ushbu   imkoniyatni   aniq   bir
misol bilan namoyish   etamiz   va uchta   vidjetni   sahnaga joylashtiramiz   (   8-   rasm   ).
P -   8.   Grafik vidjetlar
#   ichiga   <   QtGui   > kiradi
int   main (   int   argc   , char **   argv   ) {
QApplication   dasturi (   argc   ,   argv   );
QGraphicsScene   sahnasi (   QRectF   (0, 0, 400, 400));
QGraphicsView   ko'rinishi (   & sahna);
QPushButton   cmd   (   "Chiqish");
QGraphicsProxyWidget   *   pproxyWidget   =   scene.addWidget   (   &   cmd   );
QTransform   transform =   pproxyWidget   ->   transform (   );
aylantirish.translat   (   100, 350);
transform.rotate   (   -45,   Qt   ::   YAxis   );
o'zgartirish.shkalasi   (   8, 2);
pproxyWidget   ->   setTransform   (aylantirish);
QObject   ::   connect   (   &   cmd   ,   SIGNAL   (bosilgan   ()),   &   ilova,   SLOT   (chiqish
()));
QDial   dia   ;
dia.setNotchesVisible   (   haqiqiy);
pproxyWidget   =   scene.addWidget   (&   dia   );
transform   =   pproxyWidget   -> transform ();
o'zgartirish.shkalasi   (   4, 2);
transform.rotate   (   -45,   Qt   ::   YAxis   );
pproxyWidget   ->   setTransform   (aylantirish);
QProgressBar   prb   ;
prb.setFixedSize   (   500, 40);
pproxyWidget   =   scene.addWidget   (&   prb   );
transform   =   pproxyWidget   -> transform ();
transform.translat   (   20, 200);
o'zgartirish.shkalasi   (   2, 2);
transform.rotate   (   80,   Qt   ::   YAxis   );
transform.rotate   (   30,   Qt   ::   XAxis   );
pproxyWidget   ->   setTransform   (aylantirish);
QObject   ::   connect (   &   dia   , SIGNAL (   valueChanged   (   int   )), &   prb   ,   SLOT   (   setValue   (   int   ))
);
view.rotate   (   15);
view.show   (   );
return   app.exec   ();
}
Dasturning   boshida   (   yuqorida   sanab   o'tilgan   )   biz   ob'ekt   sahnasini   (   sahna   )
va   vidjet   taqdimotini   (   ko'rinishini   )   yaratamiz   .   Keyin
biz   Quit   tugmasi   vidjetini   yaratamiz   va   uni   addWidget   ()   scene   usuli
yordamida   qo'shamiz   ,   bu   esa   QGraphicsProxyWidget   sahna   elementi   ob'ektini
qaytaradi   .   Ushbu   element   yordamida   siz   foydalanadigan   geometrik   o'zgarishlarni
amalga oshirishingiz mumkin
maxsus   sinf   QTransform   .   Ushbu   sinf   translate   (),   rotate   ()   va   scale   ()   usullarini
taqdim   etadi   .   Rotate   ()   usuli   chaqiruviga   e'tibor   bering   :   unda,   burilish
burchagidan   tashqari,   biz   aylantirmoqchi   bo'lgan   o'qni   ham   ko'rsatamiz,   misolda
bu   Y   o'qi   (   Qt   ::   YAxis   ).   Geometrik   transformatsiya   setTransform   ()   usulini
chaqirish   orqali   elementga   (   pproxyWidget   ko'rsatkichi   )   qo'llaniladi   .   Biz   xuddi
shu   narsani   QDial   va   QProgressBar   vidjetlari   bilan   qilamiz   .   Keyin,   biz   signalno-
amalga   uyasi   sumkalar   aloqa   vidjetlar   masalan,   tugmasini   bosing,   Chiqish   ,   biz
uyasi   ariza   bilan   sherik   chiqinglar   )   (va   signal   ValueChanged   ()   vidjet   QDial   -   bir
uyasi   SetValue   ()   vidjet   QProgressBar   .   Va   nihoyat,   sahnani   o'zgartiring   va   Z   o'qi
bo'ylab 15 daraja aylantiring.
3.   Dasturga multimedia moslamalarini qo'shish usullari.
Ovozni tinglang
Ehtimol, siz muhim vaziyatlarda ba'zi dasturlar sizning e'tiboringizni jalb qilish
uchun qisqa signal signalini ishlatishini payqadingiz.   Ushbu texnikadan dasturlarda
foydalanish   uchun   siz   shunchaki   statik
usulni   QApplication   ::   beep   ()   chaqirishingiz   mumkin   .   Shuni   ta'kidlash   kerakki,
chiqadigan   ovoz   baland,   shuning   uchun   uni   faqat   favqulodda   holatlarda   ishlatish
yaxshiroqdir. Sizga   jiddiy   dasturlash   uchun   bu,   albatta,   etarli   bo'lmaydi   va   shunchaki   oddiy
nashrdan   ko'proq   ovozli   signal   signalini   talab   qiladi   .N   avernyaka   ,   hech
bo'lmaganda, har qanday ovozli faylni ijro etishi kerak.
ESLATMA
Agar siz faylni ijro etishning yanada murakkab xususiyatlaridan foydalanmoqchi
bo'lsangiz   ,   masalan,   ijro   etish   holatini,   hajmini,   effektlarni   amalga   oshirishni
boshqarish kabi bo'lsa,   to'g'ridan-to'g'ri   Phonon   moduli imkoniyatlarini tavsiflovchi
28-bo'limga o'tishingiz mumkin   .
Qt   beradi   QSound   sinfini   , bu ish uchun   .   Ushbu sinfda   tovushni   ijro etish   uchun
statik   play   ()   usuli   mavjud   bo'lib   ,   unga   ovozli   faylning   to'liq   nomini   berish
kerak   .   Bu   ovozli   faylni   ijro   etishning   eng   oson   usuli   va   shu   bilan   birga   xotira
resurslaridan foydalanish jihatidan eng tejamli.   Masalan; misol uchun:
QSound   ::   play   ("   music   /yorrow.wav");
Agar   sizning   dasturingiz   ketma-ket   bir   necha   marta   ovozli   faylni   ijro   etishi
kerak bo'lsa, unda bu   statik usul endi kerak emas va siz   QSound   sinfining ob'ektini
yaratishingiz   kerak   bo'ladi   .   Ovozli   faylida   bir   qator   takrorlashni
o'rnatadigan   setLoops   ()   usulini   taqdim   etadi   .   −1   qiymatidan   o'tib,   cheksiz
takrorlash davri hosil bo'ladi.   Bu usuli   play   ()   usuli bajarilishidan oldin chaqirilishi
kerak:
QSound   tovushi (   "music /   sound.wav   ");
sound.setLoops   (   3);   // 3   marta
sound.play   (   );
Qolgan takrorlashlar sonini aniqlash kerak bo'lsa, u holda siz   qiziqqan qiymatni
qaytaradigan QSound   ::   loopsRemaining   ()   usulini chaqirishingiz kerak   .
Ovozli faylni o'ynashni to'xtatish uchun   QSound   ::   stop   ()   usulini   chaqiring   .
Ushbu misol uchun ijro etishni to'xtatish jarayoni quyidagicha ko'rinadi   :
sound.stop();
Ammo   bu   usul,   albatta,   QSound   sinfining   ob'ekti
yaratilgan   va   uning   play()   usuli chaqirilgan hollarda qo'llaniladi   . Agar   siz   kutilmaganda   ijro   etish   oxirigacha   tugaganligini   yoki   u
to'xtatilganligini   bilishingiz   kerak   bo'lsa,   u   holda   QSound   ::   isFinished   ()   usulini
chaqirishingiz   mumkin   ,   agar   ijro   tugaguniga   qadar   haqiqiy   bo'lsa,   agar
u   yolg'on   bo'lsa   to'xtatildi.   Agar   ijro   etish   davom
etsa,   isFinished   ()   usuli   false   qiymatiga   qaytadi   .            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: Dastur tarkibida grafik va multimedia ob’yektlari Reja: 1. Dastur tarkibiga rasm va tasvirlarni joylashtirish. Qt dasturlash muhiti grafik imkoniyatlari. 2. Qt dasturlash muhitida multimedia vidjetlari,ularning xossa va hodisalari. 3. Multimedia ob’yektlarini dasturga qo’shish usullari.

1. Grafik ob’ektlar bilan ishlash. Nuqta, ikki o'lchovli o'lchovlar, to'rtburchaklar kabi geometriya darslari, shuningdek, rang qiymatlarini saqlash uchun maxsus sinflar ko'pincha kompyuter grafikalarini dasturlash uchun ishlatiladi. Nuqta Ikki o'lchovli koordinatalar tizimidagi nuqtalarni aniqlash uchun ikkita sinf ishlatiladi: QPoint va QPointF .Ikki o'lchovli koordinatalar tizimida nuqta X va Y raqamlari juftligi bilan ifodalanadi, bu erda X gorizontal va Y vertikaldir. Koordinata o'qlarining odatdagi tartibidan farqli o'laroq, Qt nuqtaning koordinatalarini belgilashda odatda Y o'qi pastga yo'naltirilgan deb taxmin qilinadi (7-rasm). QPoint klassi butun koordinatali nuqta, QPointF esa haqiqiy koordinatali tasvirlaydi . Ikkala sinfning interfeysi bir xil, u usullarni o'z ichiga oladi,koordinatalar bilan turli xil operatsiyalarni bajarishga imkon beradi, masalan, boshqa nuqtaning koordinatalari bilan qo'shish va olib tashlash. Nuqtalarni qo'shganda / chiqarganda ularning X va Y koordinatalarini juftlik bilan qo'shish / ayirish amalga oshiriladi.7-rasmda keltirilgan misol ikkita nuqtani qo'shadi: pt 1 va pt 2. QPoint pt1 ( 10, 20); QPoint pt2 ( 20, 10); QPoint pt3; / / ( 0, 0) pt 3 = pt 1 + pt 2; Nuqta ob'ektlarini ko'paytirish va raqamlarga bo'lish mumkin. Masalan; misol uchun: QPoint pt (10, 20);

pt * = 2; // pt = (20, 40) Nuqtaning ( X , Y ) koordinatalarini olish uchun x () va y () usullari mos ravishda amalga oshiriladi . SetX () va setY () usullari yordamida nuqta koordinatalari o'zgartiriladi . Qiymatlarini o'zgartirish uchun nuqta koordinatalariga havolalar olishingiz mumkin. Masalan; misol uchun: QPoint pt ( 10, 20); pt . rx ( ) + = 10; // pt = (20, 20) Nuqta moslamalarni bir-biri bilan == (teng) va ! = ( teng emas ). Masalan; misol uchun: QPoint pt 1 ( 10, 20); QPoint pt 2 ( 10, 20); bool b = ( pt 1 == pt 2); // b = rost Agar X va Y koordinatalarining nolga tengligini tekshirish zarur bo'lsa, u holda usul chaqiriladi isNull ( ). Masalan : QPoint pt ; // (0, 0) bool b = pt.isNull (); // b = rost

ManhattanLength () usuli X va Y koordinatalarining absolyut qiymatlari yig'indisini qaytaradi . Masalan; misol uchun: QPoint pt ( 10, 20); int n = pt.manhattanLength (); // n = 10 + 20 = 30 To'rtburchak QRect va QRectF sinflari mos ravishda to'rtburchaklar maydonlarning tamsayı va haqiqiy koordinatalarini (nuqta va o'lcham) saqlash uchun ishlatiladi . Siz to'rtburchaklar maydonni o'rnatishingiz mumkin , masalan, konstruktorga nuqta (yuqori chap burchak) va o'lchamni o'tkazish orqali . Mintaqa, rasmda ko'rsatilgan . 8 quyidagi satrlar yordamida yaratilgan: QPoint pt ( 10, 10); QSize hajmi ( 20, 10); QRect r ( pt , hajmi); X () yoki y () usullaridan foydalanib to'rtburchakning chap tomonidagi X koordinatalarini yoki tepaning Y qismini olish mumkin . Bu koordinatalarini o'zgartirish uchun, foydalanish setX () va setY () usullari . Hajmi QSize sinfining ob'ektini qaytaradigan size () usuli yordamida olinadi . Siz shunchaki o'lcham komponentlarini qaytaradigan usullarni chaqirishingiz mumkin - width () va height (). Siz setSize () usuli va uning har bir tarkibiy qismi - setWidth () va setHeight () usullaridan foydalanib o'lchamini o'zgartirishingiz mumkin .

To'g'ri chiziq QLine va QLineF darslari bir to'g'ri chiziq yoki ko'proq to'g'ri, to'liq son va real koordinatalarini bir samolyotda bir segment tasvirlab. Boshlang'ich nuqtaning holatini x 1 () va y 1 () usullari yordamida , oxirgisi - x 2 () va y 2 () yordamida olish mumkin. Shunga o'xshash natijaga sinf ob'ektlarini qaytaradigan p 1 () va p 2 () murojaatlari orqali erishish mumkin QPoint / QPointF ilgari tasvirlangan. Dx () va dy () usullari chiziqning gorizontal va vertikal proyeksiyalarini mos ravishda X va Y o'qlariga qaytaradi . 8- rasmda ko'rsatilgan to'g'ri chiziq bitta satr kodi bilan yaratilishi mumkin: QLine liniyasi ( 10, 10, 30, 20); Ikkala sinf QLine va QLineF taqqoslash operatorlarini == ,! = va boshlang'ich va tugash nuqtalari o'rnatilmagan bo'lsa, mantiqiy haqiqatni qaytaradigan isNull () usuli . Rang Siz ko'rgan ranglar turli xil elektromagnit chastotalarga ega bo'lgan yorug'lik ta'siridan vizual tuyg'u sifatida qabul qilingan moddiy olamdagi narsalarning xususiyatidan boshqa narsa emas. Darhaqiqat, inson ko'zi ushbu chastotalarning juda kichik diapazonini idrok etishga qodir. Ko'z sezadigan eng yuqori chastotali rang binafsha rangga, eng pasti esa qizil rangga ega. Ammo bunday kichik diapazonda ham millionlab ranglar mavjud. Shu bilan birga, inson ko'zi 10 mingga yaqin turli xil rang soyalarini sezishi mumkin.