أضف Qobject في مربع التحرير والسرد من QT
سؤال
لدي فصل مخصص قمت بإنشائه ، كما يقول MyClass. الآن كيفية إضافة إشارة إلى مرجع MyClass كمعلمة ثانية في مربع التحرير والسرد أدناه:
هذا-> ui-> combobox-> addItem ("item-1" ،) ؛
الغرض من ذلك هو عندما يتم تغيير العنصر حتى يتم إطلاقه ، أريد الحصول على مثيل فئة محدد من myClass والمعالجة وفقًا لذلك.
المحلول
أولاً تحتاج إلى استخدام Q_DECLARE_METATYPE(MyClass*)
, ، بحيث يمكن استخدام النوع في QVariant
. ثم يمكنك إضافة العنصر مثل هذا:
this->ui->comboBox->addItem("item-1", QVariant::fromValue(myClass));
واستعادته:
this->ui->combobox->itemData(x).value<MyClass*>();
نصائح أخرى
بناء جملة الإجابة أعلاه غير صحيح بعض الشيء ،
استخدم q_declare_metatype (myClass*) ، في ملف رأس myClass ، بحيث يمكن استخدام النوع في QVariant.
أضف العنصر مثل هذا:
هذا-> ui-> combobox-> addItem ("item-1" ، QVariant :: fromValue (myClass)) ؛
واستعادته: هذا-> ui-> combobox-> itemData (x) .value () ؛