Russian Qt Forum
Май 06, 2024, 12:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1]
1  Qt / Пользовательский интерфейс (GUI) / Re: QTableWidgetItem и время выполнения setData, setBackground : Март 14, 2023, 11:46
как вариант, можно не выбрасывать ResizeToContents, а отключать ресайз перед сменой фона, а после — включать обратно
Да, спасибо, так и сделал.
2  Qt / Пользовательский интерфейс (GUI) / QTableWidgetItem и время выполнения setData, setBackground : Март 14, 2023, 07:47
Всем привет! Имею на форме QTableWidget с элементами на нем, типа QTableWidgetItem. Необходимо в определенный момент перекрасить фон строк (по определенному признаку). Имею вот такой цикл:
Код:
	int rows = ui->tableWidget->rowCount();
for ( int i = 0; i < rows; i++ )
{
if ( ui->tableWidget->item(i, 1)->text() == str ) {
for ( int col = 0; col < ui->tableWidget->columnCount(); col++ ) {
ui->tableWidget->item(i, col)->setBackground( QColor(255, 228, 196) );
//ui->tableWidget->item(i, col)->setData( Qt::UserRole, QColor(255, 228, 196) );
}
}
}

Код выполняется крайне медленно. Применение делегата ситуацию не меняет. Если заменить QTableWidgetItem на QLabel скорость выполнения нормальная. Подскажите почему так? Пробовать разбираться в QTableView и QAbstractTableModel (я начинающий разработчик Qt)? или все-таки есть вариант решения? спасибо.

P.S. Закомментировал и все теперь работает быстро:
Код:
ui->tableWidget->verticalHeader()->setSectionResizeMode( QHeaderView::ResizeToContents );
Страниц: [1]

Страница сгенерирована за 0.08 секунд. Запросов: 24.