2012-02-19 23 views
9

textEdit->textCursor()->selectionStart() और textEdit->textCursor()->selectionEnd() जैसे फ़ंक्शन हैं, लेकिन setSelectionStart, setSelectionEnd कोई फ़ंक्शन नहीं हैं।QTextEdit। टेक्स्ट मैन्युअल रूप से कैसे चुनें?

क्या टेक्स्ट के कुछ हिस्से को मैन्युअल रूप से चुनने का कोई तरीका है?

उत्तर

24
QTextCursor c = textEdit->textCursor(); 
c.setPosition(startPos); 
c.setPosition(endPos, QTextCursor::KeepAnchor); 
textEdit->setTextCursor(c); 

कोड का यह टुकड़ा, setPosition का उपयोग कर चयन की शुरुआत स्थिति के लिए कर्सर ले जाता है तो चयन के अंत तक यह चलता है, लेकिन दूसरे के रूप में एक MoveMode निर्दिष्ट द्वारा वर्ष की स्थिति में चयन लंगर छोड़ देता है पैरामीटर।

अंतिम पंक्ति संपादन नियंत्रण के अंदर चयन को देखने के लिए सेट करती है, इसलिए यदि आप चयनित टेक्स्ट के साथ कुछ जोड़ना चाहते हैं तो आपको इसे छोड़ना चाहिए।

इसके अलावा, यदि आपके पास सही स्थिति नहीं है, तो movePosition सहायक है: आप कर्सर को various ways में ले जा सकते हैं, जैसे कि एक शब्द दाएं या नीचे एक पंक्ति में।

+0

चयन क्षेत्र अद्यतन करने के लिए कैसे? –

-3

उपयोग करने के लिए प्रयास करें:

QTextCursor cur = tw->textCursor(); 
cur.clearSelection(); 
tw->setTextCursor(cur); 
0

मैं एक ऐसी ही समस्या का सामना करना पड़ा। विंडोज 10 में, 'ड्रैग/मूव' की एक बग हो सकती है। हम एक कम्पाइलर विकल्प के रूप में QT_NO_DRAGANDDROP का उपयोग करते हैं, जो QTextEdit में टेक्स्ट चयन को अब और अधिक नहीं बनाता है।

समाधान:

void QTextEditEx::mouseMoveEvent(QMouseEvent *event) 
{ 
    QTextEdit::mouseMoveEvent(event); 
    if (event->buttons() & Qt::LeftButton) 
    { 
     QTextCursor cursor = textCursor(); 
     QTextCursor endCursor = cursorForPosition(event->pos()); // key point 
     cursor.setPosition(pos, QTextCursor::MoveAnchor); 
     cursor.setPosition(endCursor.position(), QTextCursor::KeepAnchor); 
     setTextCursor(cursor); 
    } 
} 

void QTextEditEx::mousePressEvent(QMouseEvent *event) 
{ 
    QTextEdit::mousePressEvent(event); 
    if (event->buttons() & Qt::LeftButton) 
    { 
     QTextCursor cursor = cursorForPosition(event->pos()); 
     // int pos; member variable 
     pos = cursor.position(); 
     cursor.clearSelection(); 
     setTextCursor(cursor); 
    } 
} 

संदर्भ:

  1. दो मौजूदा जवाब

  2. QTextEdit: get word under the mouse pointer?

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