QTextEditオブジェクトに50行のテーブルがあります。 50行を1ずつ削除し、1行ずつ50行追加するには約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