ما هو دور في QTreeWidgetItem؟
-
21-08-2019 - |
سؤال
ولدي 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()