总结Qt中3种常用的的文本编辑组件:QLineEdit、QPlainTextEdit和QTextEdit,它们的类关系为:
(1) QLineEdit是单行文本编辑组件
(2) QPlainTextEdit是多行普通文本编辑组件
(3) QTextEdit是多行富文本编辑组件
测试代码:
//main.cpp
#include <QtGui/QApplication>
#include "Widget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
//Widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QtGui/QWidget>
#include <QVBoxLayout>
#include <QPlainTextEdit>
#include <QTextEdit>
#include <QLineEdit>
#include <QDebug>
class Widget : public QWidget
{
Q_OBJECT
private:
//单行普通文本
QLineEdit line_edit;
//多行普通文本
QPlainTextEdit plain_text_edit;
//多行富文本
QTextEdit text_edit;
void initEdit();
public:
Widget(QWidget *parent = 0);
~Widget();
};
//Widget.cpp
#include "Widget.h"
Widget::Widget(QWidget *parent) : QWidget(parent), line_edit(this), plain_text_edit(this), text_edit(this)
{
initEdit();
}
Widget::~Widget()
{}
void Widget::initEdit()
{
//定义垂直布局管理器
QVBoxLayout *vl = new QVBoxLayout(this);
//为line_edit增加普通文本
line_edit.insert("QLineEdit:\n");
line_edit.insert("<html><body><img src=\"./070914.jpg\" /></body></html>");
//为plain_text_edit增加普通文本
plain_text_edit.insertPlainText("QPlainTextEdit:\n");
plain_text_edit.insertPlainText("<html><body><img src=\"./070914.jpg\" /></body></html>");
//为text_edit增加普通文本
text_edit.insertPlainText("QTextEdit:\n");
//为text_edit增加html文本
text_edit.insertHtml("<html><body><img src=\"./070914.jpg\" /></body></html>");
//将3个文本编辑组件加入布局管理器
vl->addWidget(&line_edit);
vl->addWidget(&plain_text_edit);
vl->addWidget(&text_edit);
//将当前widget窗口设置为垂直布局
setLayout(vl);
}
运行:
为QLineEdit、QPlainTextEdit插入文本的方法分别是insert(),insertPlainText(),为QTextEdit插入文本的方法有insertPlainText()、insertHtml(),前者是插入普通文本,后者是插入HTML文本。因为只有QTextEdit支持富文本,所以它才解析出插图数据。
另外,获取QLineEdit和QPlainTextEdit的编辑框上的函数分别各自类的成员函数text()、toPlainText(),获取QTextEdit编辑框上的普通文本、html文本的分别为该类的成员函数toPlainText()、toHtml()。