Я использую Qt для создания сортируемого гистограммоподобного виджета.Виджет размечен с QHBoxLayout для каждой панели на графике (которые также являются виджетами).
Когда пользователь изменяет параметры сортировки, мой контроллер очищает макет, сортирует его и вызывает addWidget для каждого элементас целью.Проблема, с которой я сталкиваюсь, заключается в том, что этот список довольно большой (1000+ виджетов), и Qt сканирует, пытаясь расположить так много элементов.
Я обнаружил, что каждый раз, когда вызывается addWidget, Qtпересчитает местоположение каждого элемента в QHBoxLayout и затем обновит.Это проблема, так как он выполняет много ненужных вычислений для каждого LayoutItem перед тем, который я добавляю.Для 1000 тестовых заданий, которые я вставляю, переработка занимает около 30 секунд, что, очевидно, слишком долго.
Есть ли лучший тип макета для использования или более быстрый способ добавить коллекциюотсортировали виджеты по макету?
Редактировать: Очевидно, у меня возникла проблема не с тем, чтобы Qt снова выкладывал каждый элемент, а с внутренними элементами всех родительских и махинаций, которые происходят за кулисами.создайте тестовый проект, чтобы добавить 1000 кнопок в макет, каждый раз распечатывая счетчик.Числа распечатывались почти мгновенно, хотя Qt потребовалось те же самые ~ 30 секунд, чтобы выпрямиться.Я думаю, что проблема существует не только с QHBoxLayout, но и с системой компоновки Qt в целом.Похоже, я буду вручную размещать виджеты и вообще обходить QLayout.Спасибо всем, кто внес свой вклад.