Ma’lumotlar buferi bilan ishlash. Tezkor panellar.
Mavzu: Ma’lumotlar buferi bilan ishlash. Tezkor panellar. Reja: 1. Ma’lumotlar buferi bilan bog’liq jarayonlarni dasturlash. 2. Ish muhiti va tezkor panellar tushunchasi.Ish muhiti va tezkor panellar bilan bog’liq jarayonlarni dasturlash. 3. QSystemtrayicon sinfi haqida.
1. Ma’lumotlar buferi bilan bog’liq jarayonlarni dasturlash. Kompyuterda ishlashda foydalanuvchilar ko'pincha bir nechta dasturlar bilan ishlaydi va ular o'rtasida ma'lumotlar almashinuvi zarur. Ushbu imkoniyatni qo'llab-quvvatlash uchun ikkita keng tarqalgan texnologiyalar mavjud: buferdan foydalanish va moslamalarni sudrab olib tashlash. Shuni ta'kidlash kerakki, ushbu texnologiyalar ko'pincha dasturlar o'rtasida ma'lumotlar almashinuvi uchun emas, balki faqat bitta dasturda ishlashda qo'llaniladi. Bufer Bufer turli xil ilovalar o'rtasida ma'lumot almashish imkoniyatini beradi. Bu ma'lumotlarni bitta dasturdan boshqasiga nusxalashning eng mashhur usullaridan biridir. Bu tizimda ishlaydigan barcha ilovalar kirish imkoniyatiga ega bo'lgan xotira sohasi. Ularning har biri buferga ma'lumot yozishi yoki o'qishi mumkin. Bufer dasturlari standart buyruqlarni ta'minlashi kerak: qirqish, nusxalash va joylashtirish va bu buyruqlar foydalanuvchi ishini tezlashtirish uchun maxsus tugmachalarni birikmalar bilan ta'minlanishi kerak: <Ctrl> + <X>, <Ctrl> + <C> va <Ctrl>+ <V>. Bufer bilan ishlash uchun Qt da Qclipboard sinfidan foydalanadi. Siz ushbu sinfning ob'ektini yaratishga urinmasligingiz kerak, chunki u dastur ishga tushganda avtomatik ravishda yaratiladi va faqat birlikdagi dasturda bo'lishi mumkin. QClipboard sinfi har safar dasturlardan biri buferga yangi ma'lumotlarni joylashtirganda dataChanged() signalini yuboradi. Agar buferga joylashtirilgan ma'lumotlarni boshqarish zarur bo'lsa, u holda bu signal mos keladigan uyaga ulanadi. Masalan: connect(qApp- >clipboard(),SIGNAL(dataChanged()),pwgt,SLOT(slotDataControl())); Ma'lumotlar buferga setText() usuli yordamida joylashtirilishi mumkin, setPixmap(),setImage() или setMimeData().Masalan: QClipboard* pcb = QApplication::clipboard(); pcb->setText("My Text");
SetMimeData () usulidan foydalanib, buferga istalgan turdagi ma'lumotlarni kiritishingiz mumkin. Usul QMimeSource sinfidan meros bo'lib o'tgan sinf ob'ektiga ko'rsatgichni qabul qiladi. QMimeSource - bu boshqa formatlarga o'tkazilishi mumkin bo'lgan ma'lumotlar turlari uchun asos bo'lgan mavhum sinf. Matn(), image(), pixmap() va mimeData() usullaridan foydalangan holda ma'lumotlar almashish buferidan olinadi. Masalan: QClipboard* pcb = QApplication::clipboard(); QString str = pcb->text(); if (!str.isNull()) { qDebug() << "Clipboard Text: " << str; } 2.QSystemtrayicon sinfi haqida. Uning ishlatilishi juda sodda. Belgini o'rnatish uchun setIcon () usulini chaqiring va uni bildirishnoma maydonida ko'rsatish uchun show () usulini chaqiring. Agar sizga foydalanuvchiga xabarni ko'rsatish kerak bo'lsa, u holda showMessage() usulini chaqirishingiz kerak. Shuningdek, setToolTip () usuli yordamida foydalanuvchi uchun sichqonchani dasturingiz piktogrammasi ustiga qo'yib, uning nomini va ehtimol uning holati to'g'risida ma'lumotni ko'rishi uchun foydalanuvchi uchun ko'rsatma o'rnatish maqsadga muvofiqdir. Va, albatta, aksariyat hollarda, sizning bildirishnoma maydonidan o'zingizning dasturingiz bilan ishlash uchun kontekst menyusini o'rnatishingiz kerak bo'lishi mumkin. Buning uchun setContextMenu () usuli taqdim etiladi.Keling, oddiy dastur yozish orqali ilgari aytilgan barcha imkoniyatlarni tasvirlab beraylik. Ushbu dasturda foydalanuvchi quyidagi buyruqlarni tanlashi mumkin bo'lgan kontekst menyusi mavjud: Application Ilova oynasini ko'rsatish / yashirish - Shaklda ko'rsatilgandek ko'rsatiladi. 7 oyna. Agar oyna ilgari ko'rinadigan bo'lsa, u holda u yashirin bo'ladi;
Show Message(xabar) - rasmda ko'rsatilgan xabarni ko'rsatadi. Change Icon(iconka fayli) - qor rasmini yulduzcha va aksincha o'zgartiradi; Quit (Chiqish) . 7 -rasm 8 -rasm 9-rasm 10-rasm 1. Ish muhiti va tezkor panellar tushunchasi.Ish muhiti va tezkor panellar bilan bog’liq jarayonlarni dasturlash. #include <QtGui> #include "SystemTray.h" int main(int argc, char** argv) { QApplication app(argc, argv); SystemTray st; QApplication::setQuitOnLastWindowClosed(false); return app.exec(); } Listing 7-dagi asosiy dasturda biz shunchaki vidjet yaratamiz. Ilova oynasini yopish hech qachon dasturimizni tugatmasligi kerakligi sababli biz QApplication :: setQuitOnLastWindow () statik usulini chaqiramiz va unga noto'g'ri ma'lumot beramiz. Qt-ning vidjet oynalari sukut bo'yicha ko'rinmaydi, bu juda zo'r, chunki umuman, bildirishnoma maydoni uchun mo'ljallangan dasturlar, ushbu sohada
ishga tushirilgandan so'ng, faqat ularning belgisini ko'rsatadi va derazalari yo'q. Shu sababli, asosiy dastur odatdagi show() usulidagi chaqiruvga ega emas. Файл SystemTray.h #ifndef _SystemTray_h_ #define _SystemTray_h_ #include <QLabel> class QSystemTrayIcon; class QMenu; class SystemTray : public QLabel { Q_OBJECT private: QSystemTrayIcon* m_ptrayIcon; QMenu* m_ptrayIconMenu; bool m_bIconSwitcher; protected: virtual void closeEvent(QCloseEvent*); public: SystemTray(QWidget* pwgt = 0); public slots: void slotShowHide (); void slotShowMessage(); void slotChangeIcon (); }; Listing 7-dagi sarlavha faylida biz dasturimiz uchun oyna sinfini aniqlaymiz. Yorliqni ko'rsatish uchun u QLabel sinfidan meros qilib olinadi. Bizning sinf uchta xususiyatni o'z ichiga oladi: bizga bildirishnoma maydonidan foydalanish imkoniyatini beradigan QSystemTrayIcon ob'ekti (m_ptrayIcon ko'rsatkichi); kontekst menyusini amalga oshirish uchun zarur bo'lgan QMenu vidjeti (m_ptrayIconMenu ko'rsatkichi);