मैं क्यूटी के साथ प्रोग्रामिंग के लिए अपेक्षाकृत नया हूं और एक प्रश्न था। लघु संस्करण:क्यूटी संकेत और विरासत प्रश्न
मैं सुपरक्लास में परिभाषित संकेतों का वारिस कैसे प्राप्त करूं?
मैं किसी और की अच्छी तरह से किया जाता QTWidgets उपवर्ग के लिए डिफ़ॉल्ट व्यवहार के कुछ बदलने के लिए कोशिश कर रहा हूँ:
//Plot3D is a QWidget that defines a signal "rotationChanged" class matLinePlot : public QObject, public Plot3D { Q_OBJECT; //etc... public: //etc... //Catch Plot3D's signal "rotationChanged" and do some magic with it: void initPlot(){ QObject::connect(this, SIGNAL(rotationChanged(double , double , double)), this, SLOT(myRotationChanged(double, double, double))); } };
समस्या QObject :: कनेक्ट कतार में है। मैं क्या करना चाहता हूं रोटेशन चेंग्ड सिग्नल (qwt3D_plot.h से) को स्थानीय फ़ंक्शन/एसएलओटी - "myRotationChanged" से कनेक्ट करना है। हालांकि जब भी मैं इसे करता हूं, रन टाइम पर मुझे मिलता है:
Object::connect: No such signal matLinePlot::rotationChanged(double, double, double)
सी में: ... \ matrixVisualization.h। बेशक, मुझे पता है कि rotationChanged
matrixVisualization.h
में नहीं है - यह qwt_plot3D.h
में है, लेकिन मैंने सोचा कि चूंकि मैं Plot3D
से उत्तराधिकारी हूं, सबकुछ ठीक होना चाहिए। लेकिन, अब जब मैं इसके बारे में सोचता हूं, चूंकि सिग्नल और एसएलओटी मैक्रोज़ हैं, तो मुझे लगता है कि MOC विरासत के बारे में नहीं जानता/देखभाल नहीं करता है।
जो मुझे मेरे प्रश्न पर ले जाता है - चूंकि एमओसी और सिग्नल/एसएलओटीएस विरासत आदि के बारे में नहीं जानते हैं: मैं कहीं और परिभाषित विजेट को कैसे विभाजित कर सकता हूं और विजेट के सिग्नल तक पहुंच प्राप्त कर सकता हूं?
मेरे पास इस तरह कुछ करने के लिए encapsulation का उपयोग करने के कई उदाहरण हैं, लेकिन मुझे डर है कि मुझे यह समझ में नहीं आता कि विरासत के साथ ऐसा कैसे किया जाए।
क्षमा करें अगर यह एक हास्यास्पद प्रश्न है - मुझे लगता है कि मुझे कुछ स्पष्ट याद आ रहा है।
"matrixVisualization.h" में त्रुटि में दिखाई देने वाला संदर्भ दिखाता है कि कौन सी फ़ाइल विफल हुई QObject :: कनेक्ट है, जहां यह मिलान सिग्नल के लिए "देखने" की कोशिश नहीं कर रहा है। –