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
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 tugmachasini bosish orqali amalga oshiriladi. Qayta nomlash tugagach, QListWidget elementni o'zgartirilgan (QListWidgetItem*) va itemRenamed (QListWidgetItem *) signallarini yuboradi.
Do'stlaringiz bilan baham: |