【Qt笔记】4.文本编辑的简单使用

1 概述

QT中的文本编辑类常用的有三种,

  • 1.QLineEdit:单行普通文本
  • 2.QTextEdit:多行富文本
  • 3.QPlainTextEdit:多行普通文本

富文本指的是多文本格式。可以编辑图片和媒体相关。
上述三个文本编辑类他们的继承关系如下:

QWidget QFrame QAbstractScrollArea QTextEditt QPlainTextEdit QLineEdit Inherits Inherits Inherits Inherits Inherits

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中继承过来

QValidator QIntValidator QDoubleValidator QRegExpValidator QRegularExpressionValidator Inherits Inherits Inherits Inherits

关于上述 只限制使用整型,但是输入范围超了,依旧可以输入到文本框中,这是不符合实际情况的,所以就衍生出一些正则表达式相关的限制

//限制只能输入数字
	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设置指针位置的成员函数

猜你喜欢

转载自blog.csdn.net/qq_38753749/article/details/129977452