좋아요, 그래서 우리는 텍스트 편집기 개체가 수정되었을 때 알려주는 전용 슬롯 메서드 textChanged을 가지고 있습니다. 이 구현은 다소 견고하며 키보드로 텍스트를 삽입 할 때 복사하여 붙여 넣기 등을 할 때 알려줍니다.Qt 텍스트 가져 오기
그러나 변경된 실제 텍스트를 가져 오는 방법이 있습니까?
좋아요, 그래서 우리는 텍스트 편집기 개체가 수정되었을 때 알려주는 전용 슬롯 메서드 textChanged을 가지고 있습니다. 이 구현은 다소 견고하며 키보드로 텍스트를 삽입 할 때 복사하여 붙여 넣기 등을 할 때 알려줍니다.Qt 텍스트 가져 오기
그러나 변경된 실제 텍스트를 가져 오는 방법이 있습니까?
이고르가 말했듯이 QTextDocument
을 사용할 수 있습니다. 이 코드 예제 사용
할 일을 연결 :
connect(ui->textEdit->document(), SIGNAL(contentsChange(int,int,int)), this, SLOT(change(int,int,int)));
슬롯 만들기 :
void MainWindow::change(int pos, int del, int add)
{
QString added = ui->textEdit->toPlainText().mid(pos,add);
qDebug() << added;
}
헤더에서
: 붙여 넣거나 입력 된
void change(int, int, int);
을 그리고 지금 당신이 얻을 수있는 텍스트를 in QTextEdit
성능 정보. 실험 해 봅시다. 이 슬롯에 씁니다.
void MainWindow::clicked(int pos, int del, int add)
{
QElapsedTimer tmr;
tmr.start();
QString added = ui->textEdit->toPlainText().mid(pos,add);
qDebug() << added;
qDebug() << "operation tooks" << tmr.elapsed() <<" ms";
}
내가 입력 할 때 #include <QElapsedTimer>
출력을 잊지 마세요 :
operation tooks 0 ms
"f"
operation tooks 0 ms
"d"
operation tooks 0 ms
"g"
operation tooks 0 ms
"r"
operation tooks 0 ms
"d"
operation tooks 0 ms
"s"
operation tooks 0 ms
"f"
operation tooks 0 ms
출력 내가 공백을 포함하여 7817 개 문자로 텍스트를 붙여 넣을 때 :
...long text...
operation tooks 0 ms
이 그것을 시도하여 컴퓨터, 나는 그것이 보통의 효율이라고 생각한다.
은 멋지게 보입니다. 문서에서 찾은 것과 아주 흡사합니다. 이 새로 고침이 얼마나 빠릅니다. –
@PaulBae 제 편집을 참조하십시오. – Chernobyl
편집 해 주셔서 감사합니다. 저는 방금 시스템에서 시험해보고 비슷한 결과를 얻었습니다! –
'textEdit.toPlainText()'? 난 그 어려움의 본질을 잘 모르겠다. –
당신은'QTextEdit :: document()'와'QTextDocument' 객체를 찾고있을 것입니다. 후자는 변경 사항에 대한보다 자세한 정보가 포함 된 신호를 내 보냅니다. –
지금 QTextDocument 클래스를 살펴 보겠습니다. 제안 해 주셔서 감사합니다! –