2012-09-04 23 views
8

मेरे पास एक लेबल है जिसमें कभी-कभी कोई लंबा स्थान नहीं होता है जिसमें कंप्यूटर नहीं होता है (कंप्यूटर में पथ)।क्यूलेबेल शब्द रैप मोड

तो wrod wrap इसे बहुत अजीब लपेटता है।

क्या लेबल के शब्द-लपेटने का कोई तरीका है जो शब्द के बीच में टूट जाएगा या न केवल सफेद जगहों पर?

उत्तर

4

एक तरीका है QTextOption कक्षा का उपयोग QTextDocument के साथ QLabel के बजाय करना है। यह आपको QTextOption::WrapMode का उपयोग करने देता है। QTextOption :: WrapAtWordBoundaryOr कहीं भी आप जो चाहते हैं उसे करना चाहिए।

+1

यह अस्वीकार्य है क्योंकि QTextEdit/QTextBrowser सामग्री के अनुरूप नहीं है। – chacham15

+0

सामग्री के लिए फ़िट? मुझे इस सवाल में ऐसा कोई अनुरोध नहीं दिख रहा है। –

+0

आप सही हैं, लेकिन यह QLabel के साथ डिफ़ॉल्ट व्यवहार है, और QTextEdit के साथ नहीं। इसके अलावा, यह आसान नहीं है QTextEdit में वह व्यवहार है। – chacham15

5

इस सुरुचिपूर्ण नहीं है, लेकिन करता है काम ...
तो कहते हैं कि हैडर वर्ग निजी है:

QLabel *thisLabel; 
QString *pathName; 
QString *pathNameClean; 

और पाठ्यक्रम thisLabel कुछ जहां परिभाषित करने की। तो यह अच्छा होगा यदि यह इस आसान था होगा ....

thisLabel->setWordWrap(true); 

यह ठीक है और अंक (चाहिए कि कौन से पथ से बचने)

तोड़ने केवल तभी शब्द है अतः में अपने वास्तविक पथ रखना एक अलग स्ट्रिंग अगर आपको बाद में QFile उद्देश्यों के लिए इसकी आवश्यकता है। तब मैन्युअल रूप से लाइन नंबर प्रति एक चरित्र को परिभाषित है, और स्ट्रिंग में अंतराल डाल .... तो हम 50 से अधिक अक्षर कहूँगा एक अच्छा चौड़ाई है ...

pathNameClean = new QString(pathName); 

    int c = pathName->length(); 

    if(c > 50) 
    { 
     for(int i = 1; i <= c/50; i++) 
     { 
      int n = i * 50; 
      pathName->insert(n, " "); 
     } 
    } 
    thisLabel->setText(pathName); 

Shazam .... नकली WordWrap बिना मूल रिक्त स्थान ...

बस याद रखें कि पथनाम स्ट्रिंग अब सुंदर QLabel उद्देश्यों के लिए है और पथनाम क्लेन स्ट्रिंग वास्तविक पथ है। यदि आप किसी स्पेस इंजेक्शन वाले पथ के साथ फ़ाइल खोलने का प्रयास करते हैं तो क्यूटी प्रोग्राम क्रैश हो जाएंगे .....

(यदि कोई साधारण वर्ग विधि नहीं है तो संभवतः कोड की कुछ पंक्तियां होने की संभावना है ... और समस्या हल करने में समस्या क्यों एक प्रोग्रामर सबसे अच्छा उपकरण है!)