기사 디렉토리
1. 개요
QT에는 일반적으로 사용되는 세 가지 텍스트 편집 클래스가 있습니다.
- 1.QLineEdit: 한 줄의 일반 텍스트
- 2.QTextEdit: 여러 줄 서식 있는 텍스트
- 3.QPlainTextEdit: 여러 줄의 일반 텍스트
서식 있는 텍스트는 서식 있는 텍스트 형식을 나타냅니다. 관련 사진 및 미디어를 편집할 수 있습니다.
위의 세 가지 텍스트 편집 클래스의 상속 관계는 다음과 같습니다.
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에서 상속됩니다.
위와 관련하여 정수의 사용만을 제한하고 있으나 입력 범위를 초과하여 여전히 글상자에 입력할 수 있는 실정이며, 이는 실제 상황과 맞지 않아 정규식과 관련된 일부 제한이 도출됩니다.
//限制只能输入数字
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 멤버 함수