سؤال

في النموذج لدي QListWidget الذي يحتوي على قابلية للتحقق QListWidgetItems. أنا أبحث عن طريقة لالتقاط حدث QListWidgetItem يجري فحصها/دون رادع. لا أرى أي إشارة من هذا القبيل موجودة لهذا ولكن ربما أكون مخطئًا. ما أفعله حاليًا هو استخدام QListWidget::itemClicked() إشارة والتحقق من checkState التابع QListWidgetItem, ، لكن هذا ليس ما أريده لأن هذا الحدث يحدث في أي وقت يتم فيه النقر على العنصر ، وليس فقط تم تبديل علامة الاختيار. هل يمكن لأي شخص تقديم بعض المساعدة؟ شكرًا!

هل كانت مفيدة؟

المحلول

من الواضح أنه لم يتم توفير مثل هذه الإشارة ، أفضل رهان هو الاستخدام QListWidget::itemChanged(QListWidgetItem* item) ومسح الضوئي الناتج item->checkState(). يجب أن يكون هذا تحسنًا طفيفًا في استخدامه itemClicked

نصائح أخرى

خيار إضافي هو استخدام خاصتك QAbstractListModel مع QListView. في البداية ، يضيف هذا بعض التعليمات البرمجية الإضافية حيث تحتاج إلى إضافة رمز الإدارة الخاص بك. لكنك تحصل على وصول أقل من المستوى. أساسا لأن QListView سوف تسأل النموذج الخاص بك ماذا تفعل. كما سيتم نقل الإدخال إلى ListModel الخاص بك حيث يمكنك ربطه.

بدلاً من ذلك ، يمكنك الفئة الفرعية QStandardItemModel والقبض على بعض التعديلات المتعلقة بتغيير خانة الاختيار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top