2009-09-24 17 views
6

मैं क्यूटी का उपयोग कर रहा हूं और मुख्य विधि में मुझे ऐसी ऑब्जेक्ट घोषित करने की आवश्यकता है जिसे मुझे अपनी सभी अन्य फ़ाइलों में उपयोग करने की आवश्यकता है। मैं उस ऑब्जेक्ट को अन्य फ़ाइलों में कैसे एक्सेस कर सकता हूं? (मुझे इसे वैश्विक बनाने की जरूरत है ..)क्यूटी में वैश्विक चर, कैसे करें?

मैं आईफोन विकास के लिए उपयोग कर रहा हूं और वहां हमारे पास ऐप डिलीगेट है कि आप एप्लिकेशन में घोषित ऑब्जेक्ट तक पहुंचने के लिए पूरे एप्लिकेशन का उपयोग कर सकते हैं। डिफफिनिश लॉन्चिंग विधि। मैं क्यूटी में ऐसा कैसे कर सकता हूं?

उत्तर

8

global_objects.hpp

extern int myGlobalInt; 

global_objects.cpp

#include "global_objects.hpp" 

namespace 
{ 
    int myGlobalInt; 
} 

और फिर #include "global_objects.hpp" हर जगह में आप myGlobalInt की जरूरत है।

आपको C++ singleton vs. global static object और Initializing qt resources embedded in static library भी पढ़ना चाहिए।

+0

आप .hpp फ़ाइल में 'बाहरी' कीवर्ड भूल गए हैं - यह प्रत्येक बार एचपीपी शामिल होने पर 'myGlobalInt' को बढ़ा देगा – bluebrother

+0

@bluebrother धन्यवाद, निश्चित। –

1

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

class MainClass 
{ 
    public: 
     static int mySharedValue(void) { return m_mySharedValue; } 
     static void setMySharedValue(int value) { m_mySharedValue = value; } 
    private: 
     static int m_mySharedValue; 
} 

Foo::myOtherClassFunction(void) 
{ 
    // do something 
    int bar = MainClass::mySharedValue(); 
    // do some more 
} 

इसके अलावा, आप QApplication से अपने मुख्य आवेदन प्राप्त और वहाँ पहुँच कार्यों को जोड़ने, क्यूटी द्वारा प्रदान की qApp सूचक के माध्यम से मुख्य उद्देश्य तक पहुँचने कर सकते हैं। इसके अतिरिक्त आप हमेशा ग्लोबल वैरिएबल का उपयोग उसी तरह कर सकते हैं जैसे आप सी में कर सकते हैं, हालांकि मैं इसकी अनुशंसा नहीं करता।

+1

वैश्विक ऑब्जेक्ट का उपयोग करने का मेरा विचार इसलिए था क्योंकि इस ऑब्जेक्ट में डेटा होगा जो मुझे लगभग प्रत्येक विजेट में चाहिए और वह डेटा डेटाबेस से प्राप्त किया जाता है। यदि मैं वैश्विक ऑब्जेक्ट का उपयोग नहीं करता हूं तो ऑब्जेक्ट को इंस्टेंस किए जाने पर मुझे डेटाबेस तक पहुंचने की आवश्यकता होती है। मैंने सोचा कि इसे सिर्फ एक बार प्राप्त करना बेहतर था, क्या यह गलत विचार है? – Martin

2

क्यूटी में सिंगलटन क्यूप्लिकेशंस है, इसकी स्थैतिक विधि QApplication :: instance() जो आपको एक और केवल QAplication ऑब्जेक्ट देता है। यह कई अन्य स्थिर सदस्य कार्य (पहली उम्र की वे "वैश्विक" कहा जाता था) में, MainWindow के लिए है, सक्रिय विंडो आदि

http://doc.trolltech.com/4.5/qapplication.html

आप इसे sublass कर सकते हैं आप अपने खुद के जोड़ना चाहते हैं स्टैटिक्स।

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