سؤال

ولدي QTreeWidget مع عدة أعمدة، أود أن أضيف QTreeWidgetItems إليها. أنا في محاولة لجعل العمود الثاني يحتوي على قيمة رقمية لكل Item حتى أتمكن من فرز العناصر عن طريق هذه القيمة

QTreeWidgetItem has a method called setData(int column, int role, QVariant(data))

وأنا لا يمكن العثور على أي وثائق حول ما هي هذه الحجة role. كل ما أعرفه هو أنه إذا أنا تعيينها إلى 1 أو 2، وهو ما يظهر في العمود، إذا أنا تعيينها إلى 0 أو> = 3، لا شيء يظهر في العمود، بغض النظر، فإن الأرقام دائما في نهاية المطاف يتم فرز حسب الترتيب الأبجدي، وهو خطأ.

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

المحلول

ويمكنك استخدام كيو تي :: UserRole لأغراض محددة التطبيق. منذ هذه البيانات هو QVariant، يمكنك إنشاء QList لوضع بيانات متعددة وبعد ذلك يلقي لها QVariant وتعيين البيانات.

وهنا مثال:

QTreeWidgetItem* item = new QTreeWidgetItem();
QList<QVariant> dataList;
dataList.append("data 1");
dataList.append("data 2");
QVariant data(dataList);
item->setData(0, Qt::UserRole, data);

نصائح أخرى

والوثائق ذات الصلة يمكن العثور تحت كيو تي :: ItemDataRole (وجدت من خلال QAbstractItemModel :: setData ) . تستخدم الأدوار لتحديد ما ينبغي أن تستخدم البيانات التي يتم تمريرها ل. يمكنك استخدام الأدوار المختلفة لتحديد تلميح الأدوات، الخط أو لون عنصر، من بين أمور أخرى.

لاحظ أن item->text() هو ما يعادل الراحة للitem->data(Qt::DisplayRole).toString()

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