2012-02-19 11 views

Respuesta

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

Esta pieza de código mueve el cursor a la posición de inicio de la selección usando setPosition, a continuación, lo mueve al final de la selección, pero deja el ancla de la selección a la posición antigua especificando un MoveMode como el segundo parámetro.

La última línea establece que la selección sea visible dentro del control de edición, por lo que debe omitirla si solo desea realizar algunas manipulaciones con el texto seleccionado.

Además, si no tiene las posiciones exactas, movePosition es útil: puede mover el cursor en various ways, como una palabra hacia la derecha o hacia abajo una línea.

+0

Cómo actualizar área de selección? –

-3

intenta utilizar:

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

me encontré con un problema similar. En Windows 10, puede haber un error de 'arrastrar/mover'. Usamos QT_NO_DRAGANDDROP como una opción de compilación, lo que hace que la selección de texto en QTextEdit ya no sea mork.

Solución:

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); 
    } 
} 

referencia:

  1. Dos respuestas existentes

  2. QTextEdit: get word under the mouse pointer?

Cuestiones relacionadas