2011-02-08 29 views

Respuesta

3

Cuando se cambia el tamaño de un control de edición de texto, se llama al QWidget::resizeEvent. Simplemente tiene que anular esta función en su subclase y llamar al verticalScrollBar -> setValue (verticalScrollBar -> minimum()) (o maximum()).

+0

¡Gracias por la respuesta! Me gustaría desarrollar un programa de cliente de terminal para un servidor especial. Hay una casilla de verificación con la que puede bloquear/desbloquear la pantalla. Si está desbloqueado, los paquetes entrantes procesados ​​escritos en QPlainTextBox forzarán automáticamente la barra de desplazamiento en la parte inferior (independientemente de la posición del cursor). Tu solución parece prometedora Te daré un comentario más tarde ... ¡Gracias! – falconium

7

Usted puede utilizar el método 'ensureCursorVisible':

void QTextEdit::ensureCursorVisible() 
Ensures that the cursor is visible by scrolling the text edit if necessary. 

Esto no es una ranura, sin embargo, por lo que no se puede conectar a cualquier señal - que tendrá que crear algo usted mismo que puede conectarse a la señal vacía textChanged().

Descargo de responsabilidad: Pude haber entendido mal su pregunta: supongo que desea desplazarse hacia abajo cuando se agrega texto al texto.

+0

esto debería aceptarse como la respuesta correcta – warunanc

14

QTextEdit y QPlainTextEdit se heredan de QAbstractScrollArea. El objeto QAbstractScrollArea proporciona acceso a la barra de desplazamiento a través del método verticalScrollBar().

Por lo tanto, para saltar a la parte superior:

ui.textEdit->verticalScrollBar()->setValue(0); 

y pasar a la parte inferior:

ui.textEdit->verticalScrollBar()->setValue(ui.textEdit->verticalScrollBar()->maximum()); 

Esto debería funcionar tanto para QTextEdit y QPlainTextEdit.

+0

Eché de menos que la respuesta de TonyK ya resuelve el problema. La respuesta de TonyK debe ser aceptada. – d11

0

Aquí estoy publicando mi Solución como solución anterior dint trabajo en mi caso.

Quiero obtener el cursor al comienzo de QTextbrowser.

Mediante el uso de QTextEdit::setTextCursor, se puede mover el cursor visible en la que desea:

 // Go to beginning 
    QTextCursor textCursor = ui->textBrowser->textCursor(); 
    textCursor.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor,1); 
    ui->textBrowser->setTextCursor(textCursor); 

Esperanza, que le ayudará a alguien y guardar su valioso tiempo.

0

He hecho en Pyqt.

self.scrollArea.verticalScrollBar(). RangeChanged.connect (self.change_scroll)

--------

@pyqtSlot(int, int) 
def change_scroll(self, min, max): 
    print("cambio", min, max) 
    self.scrollArea.verticalScrollBar().setSliderPosition(max) 
Cuestiones relacionadas