2009-03-31 9 views
18
  • linux: $HOME/.config
  • खिड़कियां: %APPDATA%
  • मैक ओएस: $HOME/.config

यह http://qt-project.org/doc/qt-4.8/qsettings.html#setPath का उपयोग कर सेट किया जा सकता है, लेकिन ऐसा लगता है के रूप में मैं कर रहा हूँ इसे पुनः प्राप्त करने में सक्षम नहीं है।Qt4.4 कैसे उपयोगकर्ता सेटिंग्स पथ पाने के लिए

http://qt-project.org/doc/qt-4.8/qlibraryinfo.html#locationQLibraryInfo::LibrariesPath सिस्टम विस्तृत सेटिंग्स डीआईआर देता है, जो मैं नहीं चाहता हूं।

कोई विचार, या क्या मुझे प्रत्येक प्लेटफॉर्म के लिए इसे अलग से कोड करना है?

€: मैं एक उप निर्देशिका बनाना चाहता हूं, और इसमें फाइलों को स्टोर करना चाहता हूं। (यदि यह एक बुरा विचार है तो आप मुझे दंडित कर सकते हैं)

उत्तर

19

यह आपके प्रश्न का सीधे उत्तर नहीं दे सकता है: यदि आप प्रति उपयोगकर्ता लगातार डेटा स्टोर करना चाहते हैं, तो क्या आप इसके बजाय QDesktopServices::storageLocation(QDesktopServices::DataLocation) का उपयोग नहीं करना चाहिए?

+0

/home/user/.local/share/data// अच्छा दिख रहा है, हालांकि ऐसा लगता है कि यह QT- विशिष्ट नहीं है। क्या आप में से कोई भी व्यक्ति हवाओं पर इसे आजमा सकते हैं और परिणाम यहां पेस्ट कर सकते हैं? ये तो बहुत बढ़िया होगा। धन्यवाद –

+0

विंडोज एक्सपी पर, यह "सी: \ दस्तावेज़ और सेटिंग्स \ उपयोगकर्ता \ स्थानीय सेटिंग्स \ अनुप्रयोग डेटा" जैसे कुछ होना चाहिए –

+0

यही वही था जो मैं चाहता था। बहुत धन्यवाद। –

0

आप किस प्लेटफॉर्म पर हैं?
संबंधित हो सकता है या नहीं, लेकिन विंडोज़ में, डिफ़ॉल्ट रजिस्ट्री में QSettings लिखना है।

+0

मैं इस निर्देशिका में फ़ाइलों को स्टोर करना चाहते हैं। और मुझे पहले से ही पता है कि वे प्रत्येक मंच पर कहां हैं, लेकिन क्या यह जानकारी प्राप्त करने के लिए एक क्यूटी-रास्ता है? –

1

जहाँ तक मैं कह सकता हूं, आप पथ को पुनर्प्राप्त नहीं कर सकते हैं। क्यूटी स्रोत, src/corelib/io/qsettings.cpp में, वहाँ पथ प्राप्त करने के लिए एक समारोह है:

static QString getPath(QSettings::Format format, QSettings::Scope scope) 
{ 
    ... 

लेकिन यह क्यूटी का उपयोग कर कोड से सुलभ नहीं है। आप इसे कॉपी नहीं कर सकते हैं और इसका उपयोग कर सकते हैं, क्योंकि यह पथ को स्टोर करने के लिए आंतरिक क्यूटी ग्लोबल्स का उपयोग करता है ...

संपादित करें: QDesktopServices.storageLocation(QDesktopServices.DataLocation) का उपयोग करके एक समाधान पोस्ट किया गया था, लेकिन यह ठीक नहीं है कि सवाल क्या पूछ रहा था , यानी यदि मैंने QSettings.setPath() का उपयोग करके कस्टम पथ सेट किया है तो यह परिवर्तन को प्रतिबिंबित नहीं करता है।

0

मैंने मूल रूप से पोस्ट किए जाने के मुकाबले इस सवाल में और अधिक पढ़ा। संपादन के बाद यह स्पष्ट है। ठीक है, तो आप उपयोग नहीं कर सकते ..

QString QSettings::fileName() const 

पथ जहाँ सेटिंग्स इस QSettings वस्तु का उपयोग कर जमा हो जाती है के लिए लिखा जाता देता है।

विंडोज पर, यदि प्रारूप QSettings::NativeFormat है, तो वापसी मान एक सिस्टम रजिस्ट्री पथ है, फ़ाइल पथ नहीं।

+0

मैं घर निर्देशिका नहीं चाहता लेकिन सेटिंग्स निर्देशिका। प्रश्न में दिए गए उदाहरण। –

+0

उत्तर को प्रश्न के स्पष्टीकरण संपादन के बाद संपादित किया गया है। –

1

आपको सेटिंग्स पथ जानने की आवश्यकता क्यों है? यदि आप इसमें सेटिंग्स डालने जा रहे हैं, तो आप QSettings का उपयोग कर सकते हैं। मैं विभिन्न सेटिंग्स को पकड़ने के लिए एक उपनिर्देशिका बनाने में देख सकता था, लेकिन ऐसा लगता है कि QSettings सीधे उपयोग करने का सबसे आसान तरीका होगा।

+0

ने इसका कारण संपादित किया। आपकी मदद के लिए धन्यवाद –

+0

यह संभावित रूप से डेटा के मेगाबाइट्स है - इससे पूरे सेटिंग्स की चीज़ धीमी हो सकती है। –

8

यह एक बुरा कामकाज है। सबसे पहले आप QSettings बनाते हैं, फिर उसका स्थान प्राप्त करें।

QSettings cfg(QSettings::IniFormat, QSettings::UserScope, 
     "organization", "application"); 

QString config_dir = QFileInfo(cfg.fileName()).absolutePath() + "/"; 

क्रेडिट क्यूटी केंद्र मंच पर जाते हैं।

QSettings उपयोगकर्ता AppData निर्देशिका में डिफ़ॉल्ट कॉन्फ़िगरेशन संग्रहीत करता है। QSettings के लिए दस्तावेज़ देखें। यह कोड भी आईएनआई फ़ाइल प्रारूप में कॉन्फ़िगरेशन को स्टोर करने के लिए निर्देश देता है।

3

यह दोनों क्यूटी 4 पर काम करता है और क्यूटी 5

QApplication::setApplicationName("MyApp"); 
QApplication::setOrganizationName("Me"); 

QString homePath; 

#if QT_VERSION >= 0x050000 
    homePath = QStandardPaths::writableLocation(QStandardPaths::DataLocation); 
#else 
    homePath = QDesktopServices::storageLocation(QDesktopServices::DataLocation); 
#endif 
संबंधित मुद्दे