Изменение размера для размещения строк и столбцов в QTableView очень медленное - PullRequest
1 голос
/ 20 ноября 2011

У меня есть QTableView с пользовательской моделью, и он отлично работает.Однако когда я запускаю программу, я хочу, чтобы размер строк и столбцов соответствовал размеру, потому что по умолчанию они занимают слишком много места.Я должен отметить, что моя таблица имеет 65 тыс. Строк (только 3 столбца), и они всегда одинаковы.Следующий код работает нормально, но очень медленно.

memorListView - это QTableView.До этой строки я setModel соответствовал моей пользовательской модели

memoryListView->resizeRowsToContents();
memoryListView->resizeColumnsToContents();

Как я уже говорил, это делает именно то, что мне нужно, но для запуска требуется около 8 секунд.Я предполагаю, что это потому, что все данные должны быть извлечены из модели, когда представление иначе будет лениво запрашивать его.

Я мог бы вручную установить размер строки и столбца, что является моим текущим обходным решением, но это кроссплатформенное приложение, и мне не нужно беспокоиться о различных виджетах, размерах текста, DPI и т. д., вызывающих проблему.Я мог бы автоматически изменить размер одной строки, а затем установить для остальных размер этой строки, что было бы правильно, но кажется очень забавным.

Я надеюсь, что я делаю это наивно, иесть какая-то опция, которую я могу включить, которая сделает это быстрее.Я знаю, что все строки и столбцы будут одинакового размера;могу ли я сказать ему использовать эту подсказку как-нибудь?

Заранее спасибо.

1 Ответ

2 голосов
/ 20 ноября 2011

Вы можете просто измерить ширину текста, используя QFontMetrics, а затем установить для него ширину столбца. Нечто подобное должно работать:

QFontMetrics fontMetrics(yourWidget->font());
int columnWidth = fontMetrics.width("some text");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...