के अंदर कर्सर को स्थानांतरित करना मेरे पास QTextEdit
पर एक फॉर्म है, जिसे translationInput
कहा जाता है। मैं उपयोगकर्ता के लिए संपादन कार्यक्षमता प्रदान करने की कोशिश कर रहा हूं।QTextEdit
यह QTextEdit
में HTML-स्वरूपित टेक्स्ट होगा। मेरे पास बटनों का एक सेट है, जैसे "बोल्ड", "इटालिक", और इसी तरह, जो दस्तावेज़ में संबंधित टैग जोड़ना चाहिए। यदि कोई टेक्स्ट चयनित नहीं होने पर बटन दबाया जाता है, तो मैं सिर्फ टैग की एक जोड़ी डालना चाहता हूं, उदाहरण के लिए, <b></b>
। अगर कुछ पाठ चुना जाता है, तो मैं चाहता हूं कि टैग बाएं और दाएं दिखाई दें।
यह ठीक काम करता है। हालांकि, मैं कर्सर को को समापन टैग से पहले रखना चाहता हूं, इसलिए उपयोगकर्ता कर्सर को मैन्युअल रूप से पुनर्स्थापित करने के बिना नए जोड़े गए टैग के अंदर टाइपिंग जारी रख पाएगा। डिफ़ॉल्ट रूप से, कर्सर के बाद नया जोड़ा गया टेक्स्ट दिखाई देता है (इसलिए मेरे मामले में, बंद टैग के ठीक बाद)।
यहाँ कोड मैं इटैलिक बटन के लिए है कि क्या है:,
//getting the selected text(if any), and adding tags.
QString newText = ui.translationInput->textCursor().selectedText().prepend("<i>").append("</i>");
//Inserting the new-formed text into the edit
ui.translationInput->insertPlainText(newText);
//Returning focus to the edit
ui.translationInput->setFocus();
//!!! Here I want to move the cursor 4 characters left to place it before the </i> tag.
ui.translationInput->textCursor().movePosition(QTextCursor::Left, QTextCursor::MoveAnchor, 4);
हालांकि, अंतिम पंक्ति में कुछ भी नहीं है, कर्सर ले जाने नहीं करता है, भले ही movePosition()
रिटर्न true
, जो इसका मतलब है कि सभी परिचालन सफलतापूर्वक पूरा किए गए थे।
मैंने के बजाय QTextCursor::PreviousCharacter
के साथ ऐसा करने का भी प्रयास किया है, और इसे संपादित करने के लिए पहले और बाद में इसे स्थानांतरित करने का प्रयास किया है, जो कुछ भी नहीं बदलता है।
तो सवाल यह है कि, मैं अपने QTextEdit
के अंदर कर्सर को कैसे स्थानांतरित करूं?
आप सीधे moveCursor()' का उपयोग कर 'द्वारा पाठ कर्सर ले जाने के कर सकते हैं :: MoveAnchor, 4); ' – iliis
मुझे लगता है कि उपर्युक्त टिप्पणी को उत्तर में बदल दिया जाना चाहिए। –