После многих месяцев попыток, поиска, проверки кода и т. Д. Я не могу найти решение для правильного позиционирования нового окна в QT . В моем самом простом случае я просто хочу получить окончательный размер окна и центрировать его под мышкой. Он будет сдвинут, чтобы убедиться, что никакая часть окна не выходит за пределы экрана. Я не хочу, чтобы окно появлялось, а затем перемещалось в положение, которое вызывает визуальное раздражение, особенно при включенном FX рабочего стола.
Проблемы, с которыми я столкнулся, не все из которых имеют правильные решения:
frameGeometry не всегда заполняется до того, как окно было показано раньше.
frameGeometry иногда просто совершенно неправильный, особенно в Windows 7.
Перед отображением невозможно узнать, будет ли применен sizeHint или size, или что-то еще между ними. То есть политика размера не кажется предсказуемой.
Обратите внимание, что я знаю, как сохранить / восстановить геометрию ранее созданного окна. Несмотря на дефекты QT и здесь, у меня есть рабочее решение.
Также обратите внимание, что я не могу использовать размещение оконного менеджера по умолчанию. Для приложений, не поддерживающих MDI, в конфигурации с несколькими мониторами их размещение ужасно (часто даже не на том же мониторе, что и мышь).
Я также хотел бы избежать подкласса всех виджетов и диалогов только для реализации решение, так как оно не будет общим. Если это единственно возможный способ, я был бы готов рассмотреть его (если фильтры событий также не подходят).
Есть ли у кого-нибудь хорошие работоспособные решения?