2010-01-15 8 views
8

मैं कल्पना कर सकता हूं कि घटना के आधार पर उनमें से कुछ हो सकते हैं, लेकिन साथ ही, मुझे लगता है कि यह डीबग करने और एक दिलचस्प सबक का सबसे अच्छा तरीका हो सकता है।क्यूटी में किसी दिए गए कार्यक्रम द्वारा उत्सर्जित सभी संकेतों को कैसे रोकें?

मुझे इसकी आवश्यकता क्यों होगी? मैं QWidget पर आधारित कुछ कस्टम क्लास का उपयोग कर रहा हूं, जो एक ही विंडो में QDockWidget को डि-अटैच करते समय विस्तारित नहीं होता है। यह डॉक विजेट कब डिज़ाइन किया जा रहा है, यह जानने में मुझे कौन सी सिग्नल उत्सर्जित की जा रही है, यह जानने में मदद मिलेगी कि मुझे अपनी कस्टम कक्षा में किस विधि को ओवरराइट करने की आवश्यकता है।

दूसरे शब्दों में, मैं दस्तावेज़ीकरण से हर संभावित सिग्नल की जांच नहीं करना चाहता हूं, लेकिन केवल यह देखें कि मेरे आवेदन में कुछ कार्रवाई करने पर कौन से सिग्नल उत्सर्जित होते हैं।

उत्तर

9

किसी भी सार्वजनिक एपीआई के साथ यह संभव नहीं है।

लेकिन, यदि आप अपना कोड QTestLib- आधारित इकाई परीक्षण में डालते हैं, तो आप प्रत्येक उत्सर्जित सिग्नल को मुद्रित करने के लिए यूनिट परीक्षण -vs के साथ चला सकते हैं।

6

आप QSignalSpy कक्षा पर एक नज़र डालना चाहते हैं। मुझे लगता है कि आपको मैन्युअल रूप से उस सिग्नल को कनेक्ट करना होगा जिसे आप जासूसी करना चाहते हैं।

3

मुझे नहीं लगता कि यह क्यूटी के साथ संभव है। आप

  • QMetaObject :: विधि और QMetaMethod :: methodType का उपयोग कर कक्षा के सभी सिग्नल सूचीबद्ध कर सकते हैं;
  • उन सभी संकेतों में से अपने स्वयं के स्लॉट संलग्न करें;
  • जांचें कि QObject :: प्रेषक का उपयोग करके स्लॉट किसने बुलाया।

लेकिन मैं इसके बाद अटक गया हूं। मुझे नहीं लगता कि, प्रेषक के अलावा, स्लॉट कैसे शुरू किया गया है, इस बारे में कोई जानकारी प्राप्त की जा सकती है।

+0

सलाह के लिए धन्यवाद! मैं उसको कैसे करू? QMetaObject :: विधि पैरामीटर के लिए पूछता है। मुझे यकीन नहीं है कि मुझे इसे पास करने की क्या ज़रूरत है। –

1

signal spying देखें। क्यूटी लाइब्रेरी की कुछ महान अंतर्दृष्टि और सिग्नल/स्लॉट पर जासूसी हुई।

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