2009-09-07 6 views
21

मेरे पास मेरी कक्षा X है जो क्यूटी के वर्ग Base से प्राप्त होती है। मैंने अपनी कक्षा X में void mySlot() स्लॉट घोषित और परिभाषित किया है और मैं एक्स के कन्स्ट्रक्टर में इस स्लॉट को कुछ सिग्नल जोड़ रहा हूं। हालांकि, मेरे प्रोग्राम को चलाने पर मुझे एक त्रुटि संदेश मिलता है कि कक्षा में void mySlot() के रूप में ऐसा कोई स्लॉट नहीं है।Qt व्युत्पन्न के बजाय बेस क्लास में मेरे स्लॉट की तलाश क्यों कर रहा है?

मेटा ऑब्जेक्ट कंपाइलर (एमओसी) द्वारा उत्पन्न क्लास बेस क्लास में मेरे स्लॉट की तलाश क्यों है और मेरी (व्युत्पन्न) कक्षा में नहीं है?

उत्तर

45

क्या आपने व्युत्पन्न कक्षा पर Q_OBJECT मैक्रो जोड़ा था?

6
irc चैनल

  1. यकीन Q_OBJECT मैक्रो सभी QObject-व्युत्पन्न वर्ग की परिभाषा में मौजूद है #qt से

  2. सुनिश्चित करें कि आप केवल अपनी शीर्षलेख फ़ाइलों में अपनी QObject-derived कक्षाएं घोषित करें।
  3. सुनिश्चित करें कि आपकी सभी शीर्षलेख फ़ाइलें HEADERS = सूची में आपकी .pro फ़ाइल में सूचीबद्ध हैं।
  4. हर बार जब आप Q कक्षा में Q_OBJECT जोड़ते हैं या अपनी .pro फ़ाइल को संशोधित करते हैं तो qmake चलाएं।
संबंधित मुद्दे