2010-04-12 15 views
9

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

तो, उदाहरण के लिए, डेटा बिंदुओं शुरू में लग सकती है:

data[0 ms] = 10 
data[10 ms] = 32 
data[20 ms] = 21 
... 

लेकिन जब वे में ज़ूम, मैं अधिक अंक के रूप में आवश्यक मिलेगा, शायद:

data[0 ms] = 10 
data[2 ms] = 11 
data[4 ms] = 18 
data[6 ms] = 30 
data[10 ms] = 32 
data[20 ms] = 21 
... 

ध्यान दें कि ब्रैकेट में मान लुकअप मान (मिलीसेकंड) हैं, सरणी सूचकांक नहीं।

मुझे एक सीमा ("10 और 30 मिलीसेकंड के बीच सभी बिंदु") के लिए कुशलतापूर्वक पूछताछ करने में सक्षम होना चाहिए और कुछ हद तक कुशलतापूर्वक नए बिंदु डालें।

नेट में मैंने SortedList<int, int> का उपयोग किया होगा। क्यूटी में उपयोग करने के लिए सबसे अच्छी कक्षा क्या होगी? या मुझे एक एसटीएल कंटेनर का उपयोग करना चाहिए?

उत्तर

10

क्यूएपी स्वचालित रूप से सॉर्ट किया जाता है, इसलिए इसके ऊपर पुनरावृत्त एक क्रमबद्ध (आरोही) सूची उत्पन्न करेगा।

इसमें यह भी प्रावधान Qmap :: upperBound() और QMap :: lowerBound() जो आप अपने रेंज खोजने कार्यक्षमता के लिए उपयोग कर सकते हैं।

http://doc.qt.io/qt-5/qmap.html

+0

जब एक QHash पर पुनरावृत्त होता है, तो वस्तुओं को मनमाने ढंग से आदेश दिया जाता है। क्यूमैप के साथ, वस्तुओं को हमेशा ** द्वारा क्रमबद्ध किया जाता है **। – Yash

-3

क्यूटी में उपयोग करने के लिए सबसे अच्छी कक्षा क्या होगी? या मुझे एक एसटीएल कंटेनर का उपयोग करना चाहिए?

आप std :: map का उपयोग कर सकते हैं। मैं व्यापार तर्क के लिए एसटीएल कंटेनरों का उपयोग करने की सलाह देता हूं, और क्यूटी कंटेनर केवल तभी जब आपके जीयूआई को डेटा बाध्य करने की आवश्यकता होती है।

संपादित करें: बदल std :: std करने के लिए सेट :: नक्शा

+11

मैं दृढ़ता से क्यूटी से अधिक एसटीएल का उपयोग कर से असहमत हैं। एसटीएल का उपयोग करके आप कुछ वाकई अच्छी क्यूटी सुविधाओं जैसे उथले प्रतियां खोने जा रहे हैं। और फिर आप क्यूटी वस्तुओं में बदलने के लिए जीयूआई को डेटा पास करने के लिए जा रहे हैं, और इस गहरे प्रतियां पैदा कर सकता है। और (क्यूटी डेवलपर्स के मुताबिक) एसटीएल अभी भी सभी प्लेटफार्मों में 100% अनुकूल नहीं है क्यूटी का समर्थन करता है। –

3

मैं दृढ़ता से सलाह आप यहाँ देखने के लिए होगा: Generic Containers

आप क्यूटी में अलग कंटेनर क्लासों का एक अच्छा सारांश दिखाई देगा। .. मैं आपको उनमें से एक का उपयोग करने की भी सिफारिश करता हूं! मुझे लगता है कि आप एक QMap का उपयोग कर सकते हैं!

उम्मीद है कि यह थोड़ा सा मदद करता है!

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