में स्थैतिक वर्ग विधि से सिग्नल भेजना मैं एक स्थिर कॉलबैक फ़ंक्शन को कोड करने का प्रयास कर रहा हूं जिसे एक ही कक्षा के भीतर एक और स्थिर फ़ंक्शन से अक्सर कहा जाता है। मेरे कॉलबैक फ़ंक्शन को emit
सिग्नल की आवश्यकता है लेकिन किसी कारण से यह बस ऐसा करने में विफल रहता है। मैंने इसे डीबगर के तहत रखा है और slot
कभी नहीं बुलाया जाता है। हालांकि जब मैं कोड डालता हूं तो मैं emit
पर एक गैर स्थैतिक फ़ंक्शन में डेटा करता था जो यह काम करता है। क्या कोई कारण है कि मैं स्थिर कार्य से सिग्नल उत्सर्जित नहीं कर सकता? मैंने कक्षा का एक नया उदाहरण घोषित करने और उत्सर्जन समारोह को बुलाए जाने की कोशिश की है लेकिन बिना किसी किस्मत के।क्यूटी
class Foo
{
signals:
emitFunction(int);
private:
static int callback(int val)
{
/* Called multiple times (100+) */
Foo *foo = new Foo;
foo.emitFunction(val);
}
void run()
{
callback(percentdownloaded);
}
};
मैंने कुछ बुनियादी कोड पोस्ट किया है जो दर्शाता है कि मैं क्या करने का प्रयास कर रहा हूं। मैं अनुरोध पर पूरा कोड पोस्ट करूंगा।
संपादित करें: मैं पूर्ण कोड पोस्ट कर रहा हूं क्योंकि यह एक अजीब परिदृश्य है। http://pastebin.com/6J2D2hnM
से 2. स्थिर सीबी समारोह, लोड emitFunction में आप कहाँ सिग्नल और स्लॉट कनेक्ट होने के लिए है? – Nobody
मैं उन्हें एक अलग '.cpp' फ़ाइल में कनेक्ट करता हूं जिसे बटन दबाया जाता है। 'शून्य मुख्यविंडो :: on_pushButton_clicked() { tProc = नया फू (यह); कनेक्ट (टीप्रोक, सिग्नल (वैलचैंगेड (इंट)), यह, एसएलओटी (ऑनम्बरम्बर (इंट))); tProc-> प्रारंभ(); } 'फिर यह मेरे' फू 'वर्ग का एक नया उदाहरण बनाता है और कॉलबैक फ़ंक्शन को कॉल करने वाले थ्रेड को प्रारंभ करता है। – user99545
अपने स्थिर कॉलबैक फ़ंक्शन में आप एक नया Foo इंस्टेंस बनाते हैं और उस पर सिग्नल कॉल करते हैं। मुझे लगता है कि यह वह बिंदु है जहां आप सिग्नल को उत्सर्जित करना चाहते हैं। आप इस उदाहरण को उस स्लॉट से कैसे कनेक्ट करते हैं जिसे आप संबोधित करना चाहते हैं? – Nobody