2010-03-24 10 views
6

डीडी में अक्षांश/रेखांश दर्ज करने के लिए क्यूटी 4 विजेट के लिए सबसे अच्छा प्रारंभिक बिंदु क्या है: एमएम: एसएस प्रारूप (डिग्री, मिनट, सेकंड)? एक QLineEdit अनुकूलित करें? स्पिन बक्से की एक श्रृंखला?अक्षांश/रेखांश Qt4 विजेट?

उत्तर

6

कुछ भिन्न होते हैं: सत्यापनकर्ता साथ

QLineEdit - नहीं दिया। हमारे लिए पर्याप्त नहीं है, हम उपयोग करने योग्य संपादन और उचित दृश्य (',' 'और डिग्री चिह्नों के साथ और गलत मानों को रोकने की क्षमता और अभी भी अर्द्ध-सही राज्यों की अनुमति नहीं दे सकते हैं, और लक्ष्य व्यवहार को चिह्नित करने के लिए नहीं है त्रुटियों और उन्हें उपयोगकर्ता को ठीक करने के लिए बल दें, लेकिन उपयोगकर्ता को केवल वैध मान दर्ज करने की अनुमति दें)।

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

फिर भी, मेरे मालिक ने कहा कि यह दृष्टिकोण लगभग पहले के रूप में बदसूरत है, इसलिए यहां एक और दृष्टिकोण है: सबक्लास QAbstractSpinBox, जैसा कि ट्रॉल्टेक ने अपने QDateTimeEditor में किया था। वास्तव में, इस तरह के विजेट का व्यवहार QDateTimeEditor में लागू एक के समान है। मैंने, अभी तक यह नहीं किया है, कार्य प्राथमिकताओं का कारण है, लेकिन करना होगा।

+1

क्या आपने QLineEdit के इनपुट मास्क समर्थन को देखा है? मैंने अपना जवाब उस विकल्प के साथ भी अपडेट किया है। – richardwb

+0

हां, मैं इस संस्करण को भी आजमाऊंगा, यहां समस्या यह तथ्य है कि इनपुट मास्क विजेट को बताता है कि कुछ प्रतीकों कुछ स्थितियों पर उचित हैं, जो हमारे मामले में सच नहीं है: शायद सत्यापनकर्ता और इनपुट का कुछ मिश्रण है मुखौटा तर्क, जो दोनों उचित स्थान पर डिग्री और मिनट/दूसरा अंक आकर्षित करेंगे और उचित +/-/अंकों की स्थिति और रेंज मुद्दों को संभाल लेंगे। कहने के लिए और, मुझे नियंत्रण की आवश्यकता है, जो विभिन्न समन्वय प्रारूपों को नियंत्रित करेगा (डी.एम.एस., डीएम, जहां एम दशमलव और दूरी में दूरी है) –

2

मैं QValidator का उपयोग करता हूं, पर QLineEdit::setValidator() का उपयोग करके इसे जोड़ता हूं।

आपको उप-वर्ग की आवश्यकता होगी ताकि आप अपने विशेष मामले के लिए validate() फ़ंक्शन और संभवतः fixup() फ़ंक्शन को कार्यान्वित कर सकें, क्योंकि क्यूटी के साथ शामिल दो वैधकर्ता केवल पूर्णांक और युगल कवर करते हैं।

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

[संपादित करें: एक अन्य विकल्प QLineEdit::setInputMask() का उपयोग करके अपने QLineEdit पर "validation input mask" सेट करना है। हो सकता है कि आप पहले से ही प्रतीकों के साथ एक लाइन संपादित करें और अन्य पात्रों के लिए प्लेसहोल्डर्स, उदाहरण के लिए, और यह दृष्टिकोण आपको ऐसा कुछ देगा। QtDemo एप्लिकेशन को इस का एक उदाहरण है जो आप का चयन करके बाहर की जाँच कर सकते हैं विजेट> लाइन संपादन (विजेट दूसरे पृष्ठ पर है)]

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

  • कोई संबंधित समस्या नहीं^_^