Qt中QScrollArea的滾動條自動下拉
阿新 • • 發佈:2019-01-29
最近在做一個專案的時候,需要做一個log監視框。我用的是QTextEdit來顯示我的log資訊,但是發現每次我追加我的內容後QTextEdit中的滾動條沒有自動下拉,每次需要自己往下拉,很是麻煩。找了一些資料實現了。今天來總結一下,有不足的地方,麻煩大家指出,一起共同進步!
1 建立QTextEdit物件
void CustomClass::initTextEdit(){
m_pTextEdit = new QTextEdit(this);
connect(m_pTextEdit, SIGNAL(textChanged()), this, SLOT(onAutoScroll()));
}
2 用以下兩種方法都可以實現滾動條的自動下拉
方法一:直接設定QTextEdit物件的垂直滾動條的值(使用時記得新增標頭檔案 #include<QAbstractScrollArea>)void CustomClass::onAutoScroll()
{
m_pTextEdit->verticalScrollBar()->setValue(m_pTextEdit->verticalScrollBar()->maximum());
}
方法二:修改QTextEdit的文字游標來實現滾動條下拉(使用時記得新增標頭檔案#include<QTextCursor>)
void CustomClass::onAutoScroll()
{
QTextCursor cursor = m_pTextEdit->textCursor();
cursor.movePosition(QTextCursor::End);
m_pTextEdit->setTextCursor(cursor);
}
這樣在m_pTextEdit呼叫append()函式的時候,滾動條就會自動下拉了!