Анимированное (плавное) перемещение виджетов в QT

программирование C++ qt

Имеется некая функция-член родительского окна (вычисление положения виджета), в которой виджет также перемещается с помощью setGeometry. Нужно сделать более-менее "плавное" перемещение виджета. При разбиении движения на большое число шагов столкнулся со следующей проблемой - в пределах одной функции перерисовка формы происходит только по завершению функции (например, делаю дополнительную функцию, в которой с некоторым перерывом вызывается функция-вычисляющая положение) и "плавность" соответственно не достигается. Может быть есть какие-нибудь средства для насильного обновления окна или другие решения?
Ответы:
Нужно после каждого шага вызывать метод, инициирующий обработку событий (соответственно, перерисовка формы будет происходить при каждом его вызове).
Application->ProcessMessages();
Верно.
Ещё обратите внимание на аргумент flags - часто его полезно устанавливать в QEventLoop::ExcludeUserInputEvents, чтобы предотвратить реакцию на пользовательский ввод - иначе такие чудеса рекурсии можно получить...


17 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.