[Qt노트] 4. 간단한 텍스트 편집 사용

1. 개요

QT에는 일반적으로 사용되는 세 가지 텍스트 편집 클래스가 있습니다.

  • 1.QLineEdit: 한 줄의 일반 텍스트
  • 2.QTextEdit: 여러 줄 서식 있는 텍스트
  • 3.QPlainTextEdit: 여러 줄의 일반 텍스트

서식 있는 텍스트는 서식 있는 텍스트 형식을 나타냅니다. 관련 사진 및 미디어를 편집할 수 있습니다.
위의 세 가지 텍스트 편집 클래스의 상속 관계는 다음과 같습니다.

QWidget QFrame QAbstractScrollArea QTextEditt QPlainTextEdit QLineEdit Inherits Inherits Inherits Inherits Inherits

2 QLine편집

한 줄 텍스트는 일반적으로 입력된 데이터의 정확성을 보장하기 위해 사용자 입력을 제한하도록 유효성 검사기로 구성해야 합니다.

예를 들어 정수의 최소 입력 범위를 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");

데모 코드는 다음과 같습니다.

두 개의 버튼은 각각 두 개의 멤버 함수에 연결되어 있으며 어떻게 삽입되는지 관찰할 수 있습니다.

    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