سؤال

لدي فصل مثل هذا

class GUI : public QWidget, public QThread

عندما أفعل ما سبق ، أحصل على أخطاء حول إشارات الاتصال. The error says Reference to "connect" is ambiguous. هل هناك طريقة للوراثة من كليهما؟

شكرًا لك

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

المحلول

لا يمكنك. كلاهما QWidget و QThread وراثة (غير مشوهة) من QObject. لذلك ليس لديك اشتقاق افتراضي ، وبالتالي نسختين من QObject, الذي يربك المترجم. QObject تم تصميمه على وجه التحديد بهذه الطريقة. يرى:

هناك بعض الذين يزعمون أنه يدور حول هذا (لا يمكن العثور على الرابط في الوقت الحالي ، لكنه موجود على Google ، واجهت نفس المشكلة قبل أسبوعين) ، لكنها غير آمنة في أحسن الأحوال.

تحرير: أفضل طريقة على الأرجح هي أن يكون هناك كائن آخر يرث من QTREAD والحفاظ على هذا الكائن كعضو في GUI صف دراسي. هذا هو نوع من الحل البديل الذي يفعله معظم الناس في هذا الشأن.

نصائح أخرى

QWidgets والكائنات المرتبطة واجهة المستخدم الرسومية لا تكون في مؤشرات ترابط مختلفة عن مؤشر الترابط الرئيسي للتطبيق. يجب ألا ترث كلاهما. لا يمكنك أيضًا الاتصال بـ moveToThread() وظيفة عنصر واجهة مستخدم.

لا يمكنك أن ترث من Qobjects متعددة.

يمكنك أن ترث من واحد وجعل الآخر متغير عضو والعمل من هناك.

class GUI : public QWidget 
{
  QThread myThread;
};

هل قمت بتسمية واجهة المستخدم الرسومية الخاصة بك - هل هذا هو واجهة المستخدم الرسومية الرئيسية لبرنامجك؟ انظر الأمثلة في مجلد أمثلة QT - لديهم عينة من برامج على حد سواء واجهة المستخدم الرسومية و الخيوط.

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