2011-12-24 11 views
7

मुझे हाल ही में मेरे कोड के साथ एक समस्या आई है जो किसी विशेष वस्तु में सिग्नल-स्लॉट कनेक्शन ऑर्डर पर निर्भर होने वाले कुछ व्यवहारों के कारण हुई थी। यह मेरी तरफ से एक डिजाइन दोष है (कनेक्शन हमेशा गतिशील होने के लिए थे इसलिए यह दोष अपरिहार्य था), लेकिन यह मुझे सोचने लगा।सिग्नल-स्लॉट कनेक्शन ऑर्डर बदलें

क्या किसी ऑब्जेक्ट में सिग्नल-स्लॉट कनेक्शन को फिर से ऑर्डर करना संभव है? और/या एक बनाते समय कनेक्शन के "अनुक्रमणिका" निर्दिष्ट करें?

मुझे खुशी है कि आप इस आशय अनुकरण कर सकते हैं सभी कनेक्शनों को नष्ट करने और उन्हें एक नया क्रम में पुनः बनाने के द्वारा, लेकिन यह नहीं है कि मैं क्या पूछ रहा हूँ। मुझे एपीआई या सामान्य दस्तावेज़ों में कुछ भी नहीं मिला, इसलिए मुझे संदेह है कि जवाब नहीं है, लेकिन मैंने सोचा कि मुझे वैसे भी पूछना चाहिए ...

उत्तर

10

seemed to be the past understanding के विपरीत, मुझे एक अपडेट पढ़ने में आश्चर्य हुआ है (पर कम से कम हाल के संस्करणों में) क्यूटी बुला स्लॉट के आदेश नहीं छोड़ा गया है के रूप में अपरिभाषित:

कई स्लॉट एक संकेत से जुड़े रहे हैं, तो स्लॉट्स एक के बाद एक निष्पादित किया जाएगा, ताकि वे जुड़े हुए किया गया है, जब सिग्नल उत्सर्जित होता है।

http://doc.qt.io/qt-4.8/signalsandslots.html#signals

(हालांकि एक तर्क कर सकता है कि कि एक दस्तावेज़ में एक वाक्य सब क्यूटी 4.x संस्करणों अतीत और भविष्य के लिए एक "मजबूत" गारंटी का प्रतिनिधित्व करने के लिए पर्याप्त नहीं है।)

सिग्नल और स्लॉट को पुन: व्यवस्थित करने के लिए एक एपीआई प्रतीत नहीं होता है। यहां तक ​​कि अगर वहां थे, तो मुझे आदेश पर भरोसा करना अच्छा लगता है। मैं डिजाइन पर पुनर्विचार का सुझाव देना चाहूंगा।

एक चीज जिसे आप जांच सकते हैं, इसे बनाना होगा ताकि आपके स्लॉट सीधे कार्रवाई करने के बजाय अपने कार्यों को कतार दें। फिर जब सभी स्लॉट बुलाए गए थे, तो आप उस कतार को संसाधित करेंगे ... कुछ प्राथमिकता वाले गुणों को ध्यान में रखते हुए।

+0

सहमत हुए। जैसा कि मैंने अपने प्रश्न में नोट किया है, मुझे पता है कि यह डिज़ाइन दोष है, लेकिन एपीआई डेवलपर्स को हमें चिपचिपा परिस्थितियों से बाहर निकलने के लिए आवश्यक सब कुछ देना चाहिए चाहे वह उत्तम दर्जे का हो या नहीं। मैंने सोचा होगा कि यह एक स्पष्ट होगा, लेकिन इंटरनेट पर इसके बारे में पूछताछ की कमी के आधार पर, यह दिखाता है कि मैं वहां स्पष्ट रूप से गलत हूं! – cmannett85

+0

जैसे कि दो प्रकार की राजनीतिक स्वतंत्रताएं हैं ("स्वतंत्रता" और "स्वतंत्रता") एपीआई डिज़ाइन में दो प्रकार की शक्तिशालीता है। इस मामले में मुझे लगता है कि सिग्नल को पुन: व्यवस्थित करने की क्षमता प्रदान करने के लिए यह ठीक नहीं है, यह एक अनुबंध के साथ असंगत लगता है कि एक संविदात्मक आदेश है। * शग * http://hostilefork.com/2005/07/04/freedom-to-and- स्वतंत्रता-from/ – HostileFork

0

QObject आंतरिक रूप से एक सूची के रूप में कनेक्शन स्टोर करता है। प्रेषक की कनेक्शन सूची पर लॉक प्राप्त करने और इसकी प्रविष्टियों को पुन: व्यवस्थित करने के लिए <private/qobject_p.h> शीर्षलेख का उपयोग करना एक साधारण बात है। एक सार्वजनिक एपीआई प्रत्येक प्रमुख क्यूटी संशोधन की अवधि के लिए यह विवरण तय करेगी, और इसे बहुत सीमित माना गया था।

संबंधित मुद्दे