بيثون PyQT4 - إضافة عدد غير معروف من الحاجيات QComboBox إلى QGridLayout
سؤال
وأريد أن استرداد قائمة أسماء الناس من طابور، ولكل شخص، ضع مربع مع اسمهم إلى QGridLayout باستخدام وظيفة addWidget (). أنا يمكن أن تضع بنجاح العناصر في QListView، لكنها مجرد كتابة على رأس كل منهما الآخر بدلا من خلق صف جديد. هل لديها أية أفكار حول كيف يمكن إصلاح هذا؟
self.chk_People = QtGui.QListView()
items = self.jobQueue.getPeopleOffQueue()
for item in items:
QtGui.QCheckBox('%s' % item, self.chk_People)
وself.jobQueue.getPeopleOffQueue () سيعود شيء من هذا القبيل [ 'بوب'، 'سالي'، 'جيمي'] اذا كان ذلك يساعد.
المحلول
وهذا السطر:
QtGui.QCheckBox('%s' % item, self.chk_People)
ولا إضافة خانة الاختيار لعرض القائمة، فإنه يخلق فقط مع عرض القائمة باسم الوالدين، وهناك فرق كبير.
وأبسط طريقة لاستخدام طريقة عرض القائمة هي الطبقة QListWidget
الراحة. لذلك، وخلق مربعات ك حالات QListWidgetItem
ثم استخدام addItem
على لائحة القطعة لإضافة حقا لهم لذلك.
هل لديك مشكلة إضافتها إلى تخطيط الشبكة؟ عادة، إذا كان مقدار خانات لديك هو جزء صغير تخطيط الشبكة قد يكون من الأفضل - كل هذا يتوقف على الطريقة التي تريد التطبيق الخاص بك للبحث. ولكن إذا كنت قد يكون لديك الكثير من هذه الأجسام، ثم قائمة القطعة / الرأي هو الأفضل.
نصائح أخرى
وأنا لا أستطيع أن أقول لك الحل في باي كيوت لكن هيكل تحتاج إلى متابعة هو التالي. وQListView يمكن أن تفعل ما تريد، لا تحتاج إلى إنشاء مربعات منفصلة. إنشاء فئة فرعية من QAbstractItemModel
أو <وأ href = "HTTP: //doc.trolltech كوم / 4.5 / qstandarditemmodel.html "يختلط =" نوفولو noreferrer "> QStandardItemModel
(اعتمادا على مقدار الترميز كنت تريد أن تفعل) تجاوز أسلوب flags()
للعودة الأعلام المناسبة <م> بما في ذلك م> Qt::ItemIsUserCheckable
أو في طريقة columncount()
إضافة عمود إضافي لتشمل مربع وفي طريقة data
للعمود حيث تريد مربع لتظهر إعادة Qt::Checked
الدولة فحص، Qt::Unchecked
لQt::CheckStateRole
.
ويمكن أيضا أن يتم ذلك باستخدام QListWidget
حيث يمكنك استخدام <أ href ل = "http://doc.trolltech.com/4.5/qlistwidgetitem.html" يختلط = "نوفولو noreferrer"> QListWidgetItem
لإضافة البيانات ولست بحاجة لخلق نموذج. على QListWidgetItem
يمكنك استخدام setFlags()
وsetData(QVariant(bool, Qt::CheckStateRole)
دون الحاجة إلى فئة فرعية نموذج