هل هناك خطأ في التعليمات البرمجية الخاصة بي لملء qtreeview؟

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

  •  19-09-2019
  •  | 
  •  

سؤال

أنا أستخدم Pyqt 4.4.

أفضل عرض باستخدام بعض الصور. يجب أن تحتوي جميع العقد على أوراق من 0 إلى 99. يتم تحميلها بشكل تدريجي باستخدام canFetchMore() و fetchMore(). وبعد ولكن لسبب غير معروف بالنسبة لي هذا يعمل فقط لعقدة الجذر. (الصورة 1)

إذا كنت طي وتوسيع عقدة يتم تحميل 10 قيم إضافية. (صورة 2 و 3)

من الغريب أيضا أن يتم تحميل 10 قيم، حيث يتم تحميل التعليمات البرمجية فقط 5 لكل مكالمة fetchMore(), ، وهذا يعني أن هذا يطلق عليه 2 مرات قبل توقف التعليمات البرمجية لتحميل المزيد من البيانات.

Screenshot 1 Screenshot 2 Screenshot 3

لقد كتبت مثالا صغيرا لإظهار المشكلة، فقط تشغيله python test.py. http://snipt.org/lh.

هل يعرف أحد ما الذي يسبب هذا الخطأ؟

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

المحلول

ألقيت نظرة على مصدر كيو تي (V4.5، على الرغم من أنني لا أتوقع فرقا كبيرا بين V4.4 و V4.5) ل QabstractItemview و QtreeView، ولا أعتقد أنهم يدعمون التحميل كسول تدريجي من العقد الطفل.

qabstractitemview لا يوجد لديه فكرة من الأشجار، لذلك يستدعي فقط fetchMore() في أفضل المؤشر الأكثر. يدعو fetchMore() متي:

  • يتم تحديث الهندسة
  • يتم نقل أشرطة التمرير
  • يتم إدراج الصفوف
  • يتم تغيير العنصر الحالي نتيجة عملية السحب الذاتي والإفلات التلقائي

qtreeview يدعو بالإضافة إلى ذلك fetchMore() متي:

  • يتم توسيع عنصر (هذا هو في الأساس الوقت الوحيد الذي يستدعيه fetchMore() مع مؤشر غير جذر)
  • يحتاج تخطيط الرأي إلى رد الفعل، مثل مع expandAll() و collapseAll()

أعتقد أن أفضل حل سيكون في الفئة الفرعية QTREEVIEVE لجعله استدعاء fetchMore() في الأماكن المناسبة ومع المؤشرات المناسبة.

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