2012-09-13 17 views
5

मैं एक QSlider का उपयोग करने की कोशिश कर रहा हूं, लेकिन अगर कोई स्थिति X पर क्लिक करता है, जहां वह स्लाइडर को रखना चाहता है, स्लाइडर हमेशा मान को अधिकतम या न्यूनतम पर सेट करता है और फिर मान पर एक्स। तो between में एक अनावश्यक कदम है। मैं इस चरण से कैसे बच सकता हूं?QSlider अनावश्यक कदम बनाता है

मैंने QTDesigner की सहायता से स्लाइडर को कार्यान्वित किया। शेष सेटअप के लिए कोड निम्नलिखित है:

_ui->horizontalSlider->setRange(1, aMaximalValue); 
_ui->horizontalSlider->setValue(theCurrentValue); 
connect(_ui->horizontalSlider, SIGNAL(valueChanged(int)), this, SLOT(onValueOfSliderChanged(int))); 

उत्तर

3

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

+0

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

1

हां, जैसा कि शुभ समझाया गया था, पैगस्टेप शायद बहुत बड़ा है। QSliders के साथ एक आम मुद्दा यह है कि वे आपके द्वारा क्लिक की गई स्थिति पर नहीं जाते हैं, लेकिन उस दिशा में एक पैगस्टेप ले जाते हैं।

कि समस्या का एक समाधान में this question

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