1 概述
QT中的文本编辑类常用的有三种,
- 1.QLineEdit:单行普通文本
- 2.QTextEdit:多行富文本
- 3.QPlainTextEdit:多行普通文本
富文本指的是多文本格式。可以编辑图片和媒体相关。
上述三个文本编辑类他们的继承关系如下:
2 QLineEdit
单行文本一般需要配置验证器去限制用户的输入,来保证输入的数据的准确性.
比如我这边限制了一个整型的输入最小范围为0~200, 但是实际输入可以超200,可是作为单行文本只能返回其上限200.
QLineEdit *m_lineEdit = new QLineEdit(this);
QValidator *m_validator = new QIntValidator(0, 200, this);
m_lineEdit->setValidator(m_validator);
//QIntValidator *m_validator = new QIntValidator(0, 200, this);
其中这一类验证器的各个类的继承关系如下图,都是从QValidator中继承过来
关于上述 只限制使用整型,但是输入范围超了,依旧可以输入到文本框中,这是不符合实际情况的,所以就衍生出一些正则表达式相关的限制
//限制只能输入数字
m_lineEdit->setValidator(new QRegExpValidator(QRegExp("[0-9]+$")));
//限制只能输入数字和字母
m_lineEdit->setValidator(new QRegExpValidator(QRegExp("[a-zA-Z0-9]+$")));
//限制只能输入大写字母
m_lineEdit->setValidator(new QRegExpValidator(QRegExp("^[A-Z]+$")));
一些常用的成员函数
//setPlaceholderText用来设置初始化默认显示的值
m_lineEdit->setPlaceholderText(QString::fromLocal8Bit("int"));
// 用于清空单行文本的显示
m_lineEdit->clear();
// 用于显示相关的文本
m_lineEdit->setText("click");
// 可以通过text()获取当前相关的文本,做demo的时候可以做成如下方式来查看
out_lineEdit->setText(m_lineEdit->text());
3 QTextEdit
setText 设置文本框的内容
setPlainText和insertPlainText都是插入相关的内容.
setPlainText会清空一遍文本内容.
insertPlainText不清空会在当前指向的文本后插入相关的内容
m_textEdit->setPlainText("set");
m_textEdit->insertPlainText("insert");
demo代码如下:
两个按钮分别连接了两个成员函数,可以观察到其的插入方式。
QTextEdit *m_textEdit= new QTextEdit;
QTextEdit *m_outExtEdit= new QTextEdit;
QVBoxLayout *v_layout = new QVBoxLayout;
v_layout->addWidget(m_textEdit);
v_layout->addWidget(m_outExtEdit);
QTextCursor cursor = m_textEdit->textCursor();
QPushButton *btn1 = new QPushButton("set");
QPushButton *btn2 = new QPushButton("insert");
v_layout->addWidget(btn1);
v_layout->addWidget(btn2);
connect(btn1,&QPushButton::clicked, [=](){
m_textEdit->setPlainText("set");
}
);
static int num = 0;
connect(btn2,&QPushButton::clicked, [=](){
num++;
m_textEdit->insertPlainText(QString::number(num));
}
);
setLayout(v_layout);
4 QPlainTextEdit
这个和上述两个控件和不少的成员函数是相同的,使用起来也只是不能插一些奇奇怪怪的东西罢了.
同样有insertPlainText成员函数
setTextCursor设置指针位置的成员函数