سؤال

أرغب في ربط بيانات إضافية مع كل 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 مع النموذج الخاص بك.

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