CuteQt Blog » Blog Archive » Qt4小技巧——QTextEdit自動滾屏
Qt4小技巧——QTextEdit自動滾屏
本站所有文章由本站和原作者保留一切權力,僅在保留本版權信息、原文鏈接、原文作者的情況下允許轉載,轉載請勿刪改原文內容, 並不得用於商業用途。 謝謝合作。
原文鏈接: Qt4小技巧——QTextEdit自動滾屏
今天偶然需要QTextEdit顯示出調試的log,仔細翻了下文檔,才發現沒有設置自動滾屏的方法。
總不能每次出來新的log,還要手動翻到最下面吧,於是干脆自己手寫了一個,可以利用 QTextCursor來定位內容的最后位置,當每次內容更新信號發送之后,移動即可。
簡單的例子如下:
TextEdit.h
#ifndef TEXTEDIT_H
#define TEXTEDIT_H#include <QTextEdit>
class QTimer;
class TextEdit : public QTextEdit
{
Q_OBJECTpublic:
TextEdit(QWidget *parent = 0);
~TextEdit();
private:
QTimer *timer;
public slots:
void addText();
void autoScroll();};
TextEdit.cpp
#include <QTextCursor>
#include <QTimer>
#include “TextEdit.h”TextEdit::TextEdit(QWidget *parent)
: QTextEdit(parent)
{
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(addText()));
connect(this, SIGNAL(textChanged()), this, SLOT(autoScroll()));timer->start(1000);
}TextEdit::~TextEdit()
{}
void TextEdit::addText()
{
QString text = this->toPlainText();
text.append(“Test\n”);
this->setText(text);
}void TextEdit::autoScroll()
{
QTextCursor cursor = this->textCursor();
cursor.movePosition(QTextCursor::End);
this->setTextCursor(cursor);
}
main.cpp
#include <QtGui/QApplication>
#include “TextEdit.h”int main(int argc, char *argv[])
{
QApplication a(argc, argv);
TextEdit w;
w.show();return a.exec();
}