У меня есть сетка элементов в PyQt, и когда пользователь изменяет размер окна, мне нужно соответственно увеличить/уменьшить количество столбцов. Количество строк обрабатывается областью прокрутки, поэтому мне не нужно беспокоиться об изменениях в направлении y (если это имеет значение).
В моей реализации QMainWindow я знаю, что можно переопределить функцию resizeEvent(), которая будет запускаться для любых и всех настроек окна. Однако использовать это для перестроения сетки каждый раз ужасно неэффективно. Просто чтобы проверить функцию, чтобы увидеть, как она работает, я заставил resizeEvent просто напечатать строку, и это привело к тому, что мои настройки окна были немного запаздывающими и визуально несовершенными (скорее дрожащими, чем плавными). Я, вероятно, выполню простую операцию деления размера окна, чтобы увидеть, стало ли оно больше или меньше, чтобы изменить количество столбцов, но даже это, если выполнять сотни раз за настройку, может вызвать проблемы с задержкой. Перестроение всей сетки может занять даже секунду, поэтому было бы предпочтительнее не делать этого, пока пользователь манипулирует окном.
Есть ли более эффективный способ сделать это, или resizeEvent мой единственный вариант? В идеале я хотел бы, чтобы событие срабатывало только после того, как пользователь закончил настройку окна, а не событие, которое срабатывает практически для каждого движения пикселя по мере их возникновения (которое может быть сотни или тысячи раз за регулировку в течение 1 секунды) .
Я использую PyQt5, но если вы лучше знакомы с PyQt4, я могу понять ваше решение PyQt4 в контексте PyQt5. То же самое для решения C++ Qt4/5.