QT - كيفية ربط البيانات مع QTableWidgetItem؟
-
24-09-2019 - |
سؤال
أرغب في ربط بيانات إضافية مع كل QTableWidgetItem التي تم إدخالها في الجدول ، من أجل استخدام هذه البيانات في المستقبل ، عندما يتم النقر فوق عنصر جدول. ولكن لا ينبغي أن تكون هذه البيانات مرئية. كيف أقوم بذلك؟
المحلول
يمكنك استخدام QTableWidgetItem::setData()
مثل ذلك:
setData(Qt::UserRole, myData); // set
أين myData
مدعوم Qvariant يكتب. يمكنك استخدام QTableWidgetItem::data()
لاسترداد القيمة التي تخزنها.
إذا كنت بحاجة إلى أكثر من واحد يمكنك استخدامه Qt::UserRole
+ 1 ، + 2 ، وهكذا (Qt::UserRole
هو "الدور الأول الذي يمكن استخدامه لأغراض خاصة بالتطبيق." ، يمكنك قراءة المزيد عن الأنواع الأخرى من الأدوار هنا).
إذا كنت تقوم بتخزين نوع مخصص لا يدعمه QVariant ، فستحتاج إلى تسجيل نوعك مع نظام QT Meta-Object. ينظر الى qmetatype لمزيد من التفاصيل حول ذلك.
إذا كنت ترغب في تخزين عدد صحيح ، على سبيل المثال:
QTableWidgetItem* widgetItem = tableWidget->item(row, col); // get the item at row, col
int myInteger = 42;
widgetItem->setData(Qt::UserRole, myInteger);
// ...
myInteger = widgetItem->data(Qt::UserRole);
نصائح أخرى
يمكنك استخلاص من QTableItem وتزويد عضو البيانات الخاص بك ، أو يمكنك استخدام QTableView مع النموذج الخاص بك.