2010-04-09 12 views
7

मैं बस एक फ़ाइल को सहेजने की कोशिश कर रहा हूं। हालांकि, मुझे एक डिफ़ॉल्ट प्रत्यय प्राप्त करने के लिए प्रत्यय के बिना दर्ज फ़ाइल नाम की आवश्यकता है (जो setDefaultSuffix() करता है)।क्यूटी QFileDialog - केवल स्थिर कार्यों के साथ मूल संवाद?

मैं इसके बजाय सिर्फ मूल बचत संवाद को पूरी तरह से खोना नहीं चाहता हूं। exec() QDialog से अधिभारित नहीं होता है, इसलिए यह पूरी तरह से देशी हुक को छोड़ देता है (डॉटयूसेनेटिव डायलॉग विकल्प को अनदेखा कर देता है भले ही यह गलत हो)।

यदि मैं फ़ाइल को ओवरराइट चेतावनी अक्षम करता हूं और फ़ंक्शन रिटर्न के बाद डिफ़ॉल्ट प्रत्यय को जोड़ता हूं, तो मैं संवाद को फिर से खोलूंगा यदि उपयोगकर्ता ओवरराइट नहीं करना चाहता था ... और यह सिर्फ बदसूरत है।

क्या कोई सिग्नल है जिसे मैं पकड़ सकता हूं और डिफ़ॉल्ट प्रत्यय को तुरंत इंजेक्ट कर सकता हूं यदि यह वहां नहीं है? मैं अनुमान लगा रहा हूं, क्योंकि यह एक मूल संवाद है।

क्या मैं फ़िल्टर के साथ कुछ गलत कर रहा हूं? मेरे पास केवल एक फ़िल्टर विकल्प है। इसे उस एक्सटेंशन का उपयोग करना चाहिए।

यह बहुत लंगड़ा लगता है। सेव डायलॉग लॉन्च करना और बस "टेस्ट" टाइप करना कभी भी एक एक्सटेंशन रहित फ़ाइल में नहीं होना चाहिए। "परीक्षण।", हाँ। "परीक्षण" कोई रास्ता नहीं। जब वे लोड हिट करते हैं तो वे वास्तव में उपयोगकर्ताओं को भ्रमित कर देंगे और वे जो फ़ाइल अभी सहेजे गए हैं उन्हें नहीं देख सकते हैं।

मुझे लगता है कि क्यूटी का क्रॉस-प्लेटफार्म हिस्सा मुझे सबसे कम आम denominator फ़ाइल संवाद कार्यक्षमता दे रहा है?

उत्तर

5

हां, यदि आप क्यूटी स्रोत कोड देखते हैं तो यह स्पष्ट है कि केवल स्थिर कार्य मूल फ़ाइल संवाद का उपयोग करते हैं। दुर्भाग्य से देशी संवाद किसी भी अन्य तरीके से प्राप्त करना संभव नहीं है ...

0

क्या आपने स्थिर कार्यों में फ़िल्टर विकल्प का प्रयास किया है? [संपादित करें:। ओह, देखा आपके पास पहले से]

मैं सिर्फ यह अपने आप करने की कोशिश की, उदाहरण के लिए, और चीजों को काफी उचित होने लगते हैं:

QString filter = "Text files (*.txt)"; 
QString selectedFilter; 
QString filename = QFileDialog::getSaveFileName(0, "", "", filter, &selectedFilter); 

बचाने संवाद रिटर्न में परीक्षण में प्रवेश कर test.txt
परीक्षण दर्ज करना। सहेजें संवाद में परीक्षण..txt देता है।
बचत संवाद में test.foo दर्ज करना test.foo

ये सभी उचित ओवरराइट संवाद दिखाते हैं यदि उस नाम के साथ पहले से मौजूद एक मौजूदा फ़ाइल है।

एक ही रास्ता मैं परीक्षण प्राप्त कर सकते हैं, किसी भी प्रत्यय के बिना, उद्धरण के साथ आसपास के द्वारा होता है ("परीक्षण"), या पहले * दर्ज करके। * (यह सभी फ़ाइलों को प्रदर्शित कर देगा) और उसके बाद परीक्षण दर्ज करें। (हालांकि एक विषमता यह है कि selectedFilter में अभी भी संवाद में दिखाया गया फ़िल्टर होगा, भले ही इसका उपयोग न हो)।

+0

शायद यह एक प्लेटफॉर्म चीज है। मेरा मूल संवाद जीटीके (गनोम/लिनक्स) है, तुम्हारा क्या है? – darron

+0

मेरा विंडोज़ है। मान लीजिए कि शायद यह अंतर कहाँ है। – richardwb

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