2013-02-14 14 views
5

के भीतर टेक्स्ट की एक स्ट्रिंग को हाइलाइट करने के लिए कैसे करें मैं वर्तमान में Qt4 का उपयोग कर काम के लिए एक एप्लिकेशन प्रोग्रामर विकसित कर रहा हूं। मैं एक समीकरण संपादक का निर्माण कर रहा हूं और मुझे अपने QTextEdit फ़ील्ड के भीतर एक स्ट्रिंग को हाइलाइट करने का प्रयास करने में समस्याएं आ रही हैं। मेरे पास एक ऐसा फ़ंक्शन है जो QTextEdit स्ट्रिंग के माध्यम से पार करता है और एक त्रुटि और अंत पूर्णांक देता है जहां त्रुटि स्थित होती है। मेरी मूल रणनीति त्रुटि को हाइलाइट करने के लिए इन दो बिंदुओं पर HTML टैग का उपयोग करना था। दुर्भाग्यवश एचटीएमएल टैगिंग और समीकरण वाक्यविन्यास के साथ एक मुद्दा प्रतीत होता है।QTextEdit

मुझे जो चाहिए वह मुझे एक रणनीति है जो इन दो सूचकांकों के बीच पृष्ठभूमि रंग सेट करने के लिए क्यूटी की लाइब्रेरी पर निर्भर करती है। मैंने QSyntaxHighlighter देखना शुरू किया; हालांकि मुझे लगता है कि यह एक पूर्वनिर्धारित सेट कानूनों का उपयोग करके हाइलाइट करने के लिए अधिक है और न कि & बी और पृष्ठभूमि रंग सेट करने के बीच कुछ भी हथियाने के लिए। अगर मैं सिंटैक्स हाइलाइटर का उपयोग कर सकता हूं तो कृपया मुझे उदाहरण और संदर्भ प्रदान करें क्योंकि मैंने पहले ही प्रलेखन के माध्यम से पढ़ा है और कुछ भी नहीं मिला है।

अग्रिम में किसी भी मदद के लिए धन्यवाद!

पीएस एचटीएमएल संगतता मुद्दों पर जोर देने के लिए; एचटीएमएल कई < और> संकेतों के इस्तेमाल के कारण समस्याग्रस्त हो जाता है।

उत्तर

10

आप QTextCursor और QTextCharFormat इसके लिए उपयोग कर सकते हैं:

QTextEdit *edit = new QTextEdit; 
... 
int begin = ... 
int end = ... 
... 

QTextCharFormat fmt; 
fmt.setBackground(Qt::yellow); 

QTextCursor cursor(edit->document()); 
cursor.setPosition(begin, QTextCursor::MoveAnchor); 
cursor.setPosition(end, QTextCursor::KeepAnchor); 
cursor.setCharFormat(fmt); 
+0

यह है कि मैं क्या अंततः मोड़ समाप्त हो गया है .. इस जवाब के साथ समस्या यह ऐसा लगता है कि मैं पाठ वापस डिफ़ॉल्ट रंग करने के लिए बाद में निर्धारित नहीं कर सकते है । मैं जो कर रहा हूं वह पृष्ठभूमि रंग परिवर्तन को खरोंच कर रहा है और त्रुटि प्रवण समीकरण के अपने विशेष खंड को बस चयनित पाठ होने के लिए सेट कर रहा है जब तक कि माउस किसी अन्य स्थान पर क्लिक न हो जाए। मैं स्पष्ट रूप से लाल रंग में समस्याओं को उजागर नहीं करता हूं, हालांकि इस समाधान ने मुझे जो किया था; समीकरण जांच के अधिक सहज ज्ञान के लिए आवश्यक पाठ को हाइलाइट करें। –

+0

वैसे ही आप डिफ़ॉल्ट पृष्ठभूमि रंग सेट कर सकते हैं। आपको बस उन टेक्स्ट पोजीशन को सहेजने की ज़रूरत है जिन्हें आपने पहले चुना है। – hank

+0

दुर्भाग्य से टेक्स्ट संपादन फ़ील्ड से उत्सर्जित ट्रिगर पर निर्भरता के कारण यह संभव नहीं है। एक बार जब उपयोगकर्ता बॉक्स में वापस क्लिक करता है तो मैं गायब होने के लिए हाइलाइट करना चाहता हूं। इस सिग्नल उत्सर्जित होने पर हर बार कर्सर को रीसेट करना उपयोगकर्ता को सही क्लिक करने और टेक्स्ट का चयन करने की क्षमता खोने का कारण बनता है। ठीक है अगर आप इसके लिए कोई रास्ता नहीं जानते हैं; मैंने बस सोचा कि मैं पूछूंगा। –

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