1. 程式人生 > >Qt中QScrollArea的滾動條自動下拉

Qt中QScrollArea的滾動條自動下拉

最近在做一個專案的時候,需要做一個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()函式的時候,滾動條就會自動下拉了!