QTextEdit 개체에 50 개의 행이있는 테이블이 있습니다. 50 개의 행을 1 씩 1 개 제거한 다음 50 개의 행을 1 씩 추가하면 1-2 초가 걸립니다.QTextEdit 행 삽입 및 제거가 매우 느립니다. 어쨌든 더 빨리 만들 수 있을까요?
이 작업 속도를 높이는 방법이 있습니까?
최종 결과 만 확인하면됩니다. (즉, 제거를 마친 후 행 추가).
시간이 걸리는 이유를 정확히 알기 때문에 나는 주변을 찾을 수 없습니다. 여기
그것을 테스트하기 위해 몇 가지 간단한 코드입니다//ui->textEdit is the text edit control
//This will insert 500 rows then remove 499 rows.
QTextCursor textCursor = ui->textEdit->textCursor();
textCursor.setPosition(1);
if(textCursor.currentTable() !=0)
{
for(int i =0;i<500;i++)
{
textCursor.currentTable()->insertRows(1,1);
}
for(int i =0;i<499;i++)
{
textCursor.currentTable()->removeRows(1,1);
}
}
작업을 시작하기 전에 textedit 개체를 숨기려고 (setHidden (true)) 시도하고, 마지막에 setShown (true)을 호출 할 수 있습니다. Qt 위젯은 표시되는 동안 만 그려지며 그렇지 않으면 update() 신호가 무시됩니다. 어쩌면 그리기 때문일 것입니다 ... – ypnos
일반적으로 ypnos가 설명하는 트릭을 수행하기 위해'setUpdatesEnabled()'를 사용하는 것이 더 좋습니다. – Chris
그냥 테스트했습니다. setHidden (true), setShown (true) 영향을주지 않습니다. setUpdatesEnabled (false)를 설정 한 다음 작업을 수행 한 다음 setUpdatesEnable (true)을 수행하면 영향이 없습니다. 나는 그것이 QTextEdit가 테이블을 처리하는 방식과 관련이 있다고 생각한다. 내 QT 버전 (4.7.4)인지 궁금합니다. – Anton