سؤال

ما هي أفضل طريقة لإزالة صف (QTreeWidgetItem) من QTreeWidget؟

تم تعيين محتوى QTreeWidget حسب:

myQTreeWidget->insertTopLevelItems(0, items); // items = QList<QTreeWidgetItem*>

وبعد ذلك إزالة عنصر من وجهة نظري "البنود" QList وأنا أحاول أن مسح / إعادة تعيين QTreeWidget

packList->clear();    
packList->insertTopLevelItems(0, items);

ولكن بلدي التطبيق تعطل هنا! اقتراحات؟

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

المحلول

والمشكلة هي أن يدعو packList->clear() حذف عناصر الشجرة القطعة الواردة في الشجرة. (راجع وثائق حول QTreeWidget::clear()، والذي يتضمن مذكرة حول العناصر يتم إزالتها من الشجرة قبل حذف.) عليك إما بحاجة لايجاد وسيلة لإزالة العناصر، أو لا تحتفظ بقائمة من كل منها على حدة من الشجرة.

وعلى صعيد ذات الصلة قليلا، إذا كنت تحاول تتبع البيانات الأخرى جنبا إلى جنب مع شجرة، أنصح حاولت استخدام نموذج النماذج. في الحالات غير تافهة، فقد كان من عادة بقيمة لي الوقت لتحويل لهذا الأسلوب، بدلا من استخدام الحاجيات / البنود.

نصائح أخرى

هذه الوثائق يقول، يجب أن تكون قادرة على القيام بذلك مع:

packList->takeTopLevelItem(index);

والذي يعود يزيل وإرجاع هذا البند في مؤشر الموردة.

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