이 문제의 해결책은 사용자 호버는 (이벤트 입력) 때 plainTextEdit 사용자 휴가 위젯, 우리는 다시 스크롤 자동을 사용할 때 우리는, 자동 스크롤을 중지합니다
QTextCursor cursor(ui->plainTextEdit->textCursor());
cursor.insertText("A");
if(global)
ui->plainTextEdit->verticalScrollBar()->setValue(ui->plainTextEdit->verticalScrollBar()->maximum());
ui->plainTextEdit->insertPlainText("A");//this doesn't have auto scroll
if(global)//global is bool variable, if it is true, we autoscroll to the bottom
ui->plainTextEdit->verticalScrollBar()->setValue(ui->plainTextEdit->verticalScrollBar()->maximum());//we auto scroll it everytime
또는
이제 우리는 다음에 수행. 나는 eventFilter에 의해 이것을했지만, 나는 당신이 내 생각을 이해하기를 바랍니다.
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if(obj==ui->plainTextEdit && (event->type()==QEvent::Enter || event->type()==QEvent::Leave))
{
if(event->type()==QEvent::Enter)//user move mouse on widget:stop auto-scrolling
global =false;
else
global =true;// leave event:enable auto-scrolling
ui->label->setText(event->type()==QEvent::Enter ? "Hovering" : "Not Hovering");//just show it to user, you can delete this line
}
return QObject::eventFilter(obj, event);
}
나는 당신을 이해한다. 그러나 나는> plain-> plainTextEdit-> insertPlainText ("A"); 텍스트를 추가합니다. 대신 커서를 위치시키고 텍스트를 삽입하는 데 사용합니다. 이것은 자동 스크롤입니다. 스크롤을 막을 수있는 방법이 있습니까 ??? resizeEvent를 다시 구현하려고했지만 성공하지 못했습니다. – Yore
@ user3071624'insertPlainText' 대신에'QTextCursor cursor (ui-> plainTextEdit-> textCursor());' 'cursor.insertText ("A");'를 사용하여 메소드를 시험해 봅니다. 이, 나는 대답에 사용하는 코드를 추가한다) 결과는 같았다. – Chernobyl
오! 나는 그것을 지금 본다. 그러나 여전히 텍스트를 추가 할 때 텍스트가 표시된 영역을 확장 할 때 스크롤이 계속 발생합니다. 아마 나는 스크롤을 일으키는 다른 방법을 사용하고있을 것입니다. eventFilter에 대한 코드는 매우 훌륭합니다. 감사. – Yore