У меня есть таблица с 50 строками в объекте QTextEdit. Удаление 50 строк 1 на 1, затем добавление 50 строк 1 к 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);
}
}
Вы можете попытаться скрыть (setHidden (true)) объект textedit перед началом работы и в конце вызова setShown (true). Виджеты Qt только перерисовываются, пока они видны, в противном случае сигнал update() игнорируется. Возможно, это действительно связано с рисованием ... – ypnos
Использование 'setUpdatesEnabled()', как правило, лучший способ сделать трюк, описанный ypnos. – Chris
Просто протестировал его. setHidden (true), setShown (true) Не оказывает никакого влияния. Установите setUpdatesEnabled (false), затем выполните операции, затем выполните setUpdatesEnable (true), также не имеет никакого влияния. Я предполагаю, что это имеет какое-то отношение к тому, как QTextEdit обрабатывает таблицы. Интересно, это моя версия QT (которая равна 4.7.4). – Anton