qt qtl(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_OBJECT
public:
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();
}
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!