2013-01-16 13 views
8

इसके दो संभावित तरीके हैं:कैसे QSettings साथ क्यूटी अनुप्रयोग में सेटिंग को लोड करने

  • लोड सभी सेटिंग्स कुछ struct में
  • पर मांग

किस तरीके से बेहतर है भार मूल्यों?

+1

उपयोग केस क्या है? –

+0

यह एक टेक्स्ट एडिटर है। विंडोज़-मैक्सीमीमाइज्ड, हालिया फाइलें और इसी तरह की सेटिंग्स। – user1180567

उत्तर

7

यह जिस तरह से आप अपने सेटिंग्स फ़ाइल का उपयोग करेगा पर निर्भर करता है। क्या आप अपने आवेदन के उपयोगकर्ता को गतिशील रूप से फ़ाइल में सेटिंग्स बदल सकते हैं (उदाहरण के लिए .ini फ़ाइल)? या सेटिंग्स जीयूआई द्वारा निर्धारित किया जाना है?

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

void SettingsManager::loadSettings() 
{ 
    // .ini format example 
    QSettings settings(FileName, QSettings::IniFormat); 

    IntegerSetting = settings.value("SettingName", default).toInt(); 
    BooleanSetting = settings.value("SettingName", default).toBool(); 

    // ... 
} 

फिर, पर मांग QSettings अनुकूलन की वजह से अपने बदल मूल्यों को बचाने के लिए कोई समस्या नहीं है।

/** 
    * key is your setting name 
    * variant is your value (could be string, integer, boolean, etc.) 
    */ 
void SettingsManager::writeSetting(const QString &key, const QVariant &variant) 
{ 
    QSettings settings(FileName, QSettings::IniFormat); 

    settings.setValue(key, variant); 
} 
3

यदि आप चिंतित हैं, तो आप एक इंटरफेस के पीछे सेटिंग्स के प्रत्येक तार्किक समूह डाल सकते हैं। फिर, मांग पर सेटिंग्स पुनर्प्राप्त करने के लिए QSettings का उपयोग करने वाली एक ठोस कक्षा बनाएं।

यदि आपको लगता है कि यह एक प्रदर्शन बाधा बनने के लिए है, तो सेटिंग को कैश करने वाली एक ठोस कक्षा बनाएं। (मुझे ऐसा करने की ज़रूरत नहीं है। QSettings हमेशा पर्याप्त तेज़ रहा है।)

2

QSettings के दस्तावेज़ में, यह कहता है कि इसे वास्तव में अनुकूलित किया गया है।

आंतरिक रूप से, यह QVtrings के QStrings का मानचित्र रखता है। सभी एक्सेसर विधियां बेहद उपयोगी हैं और उपयोग करने में आसान हैं।

जब मैंने QSettings का उपयोग किया है, तो मैंने इसे readSettings() और writeSettings() फ़ंक्शंस के साथ अपने उदाहरण के समान सेट किया है। पृष्ठ के आधे रास्ते के बारे में example देखें।

जिस क्षण मैं readSettings() पर कॉल करता हूं, क्यूसेटिंग ऑब्जेक्ट बन जाता है, यह मांग पर मूल्यों को लोड करता है और यह सभी संरचनाओं को कुछ संरचनाओं में रखता है।

तो मेरे मुख्य कार्य में मैं सुनिश्चित करता हूं कि मैंने अपना एप्लिकेशन नाम और मेरा संगठन नाम स्थापित किया है, और मैं QSettings::setFormat का भी उपयोग करता हूं, और उसके बाद जब भी मैं QSettings तक पहुंचना चाहता हूं, तो मैं डिफ़ॉल्ट पैरामीटर के साथ QSettings का एक उदाहरण बना देता हूं और सेटिंग्स का उपयोग करें।

QSettings s; 
int val = s.value("Some_Group/some_setting", default_value).toInt(); 

// ... 

s.setValue("Some_Group/some_setting", val); 
संबंधित मुद्दे