मैं, मैं है एक काम कार्यान्वयन कि कुछ इस तरह चला जाता है क्यूटी 4.x में एक QGraphicsView
के लिए एक ज़ूम स्लाइडर एकीकृत करने के लिए एक की जरूरत है निम्नलिखितको लागू करने के लिए ज़ूम स्लाइडर QGraphicsView
void CustomView::setZoomLevel(int level)
{
if(zoomLevel - level < -1){
setZoomLevel(level - 1);
}else if(level - zoomLevel < -1){
setZoomLevel(level + 1);
}
if(level < zoomLevel){
scale(1 - (scaleFactor * (zoomLevel - level)), 1 - (scaleFactor * (zoomLevel - level)));
}else if (level > zoomLevel){
scale(1 + (scaleFactor * (level - zoomLevel)), 1 + (scaleFactor * (level - zoomLevel)));
}
zoomLevel = level;
}
तो मेरी मुद्दा एक स्लाइडर जो QGraphicsView
की scale()
समारोह है, जो टी द्वारा दृश्य गुणा करने के लिए दो चल बिन्दु मान लेता है करने के लिए एक ज़ूम स्तर का प्रतिनिधित्व करने के मीटर n के एक मूल्य है संभोग से उत्पन्न कर रहा है ओ एक नया आकार प्राप्त करें।
तो यदि समस्या 1 * .9 * 1.1 लेती है तो आपको अभी भी 1 नहीं मिलता है, लेकिन आपको इसके बजाय 1 99 नहीं मिलता है, बल्कि इसके .99, यह थोड़ा सही है क्योंकि यह सही सूत्र नहीं है। तो मेरा अधिकतम ज़ूम समय के साथ छोटा और छोटा हो जाता है।
रिकर्सिव कॉल इसलिए हैं क्योंकि स्लाइडर कभी-कभी तेज स्लाइड पर मूल्यों को छोड़ देता है, जिसने "त्रुटि" में वृद्धि की है, इसलिए मैंने इसे थोड़ा सा पट्टी करने के लिए इसे चिकना कर दिया।
क्या ज़ूम को संभालने का कोई सही तरीका है?
आपको बहुत बहुत धन्यवाद। यह वास्तव में स्केल() के तहत प्रलेखन में उल्लेख किया जाना चाहिए। –