После обновления с Qt 5.5.1 (Ubuntu 16.04) до Qt 5.9.5 (Ubuntu 18.04) код, который изначально работал нормально (даже на Qt, поставляемом с Ubuntu 14.04), начал использовать 100% 1 ядра процессора - событие рисованиядоставлено на неопределенный срок и не может быть принято:
void OutlinesTableView::paintEvent(QPaintEvent* event)
{
verticalHeader()->setDefaultSectionSize(fontMetrics().height()*1.5);
horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
this->setColumnWidth(1, this->fontMetrics().averageCharWidth()*12);
this->setColumnWidth(2, this->fontMetrics().averageCharWidth()*12);
int normalizedWidth = width()/fontMetrics().averageCharWidth();
if(normalizedWidth < SIMPLIFIED_VIEW_THRESHOLD_WIDTH) {
this->setColumnWidth(3, 0);
} else {
this->setColumnWidth(3, this->fontMetrics().averageCharWidth()*5);
}
QTableView::paintEvent(event);
}
свыше paintEvent()
снова получает то же событие, и его нельзя остановить.Полный список кодов можно найти здесь .