بيثون PyQT4 - إضافة عدد غير معروف من الحاجيات QComboBox إلى QGridLayout

StackOverflow https://stackoverflow.com/questions/1647664

سؤال

وأريد أن استرداد قائمة أسماء الناس من طابور، ولكل شخص، ضع مربع مع اسمهم إلى 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) دون الحاجة إلى فئة فرعية نموذج

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