Qt правильно разместит новое окно на экране, отцентрирует курсор мыши, переместится на экран

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

Проблемы, с которыми я столкнулся, не все из которых имеют правильные решения:

  1. frameGeometry не всегда заполняется до того, как окно было показано раньше.

  2. frameGeometry иногда просто совершенно неправильный, особенно в Windows 7.

  3. Перед отображением невозможно узнать, будет ли применен sizeHint или size, или что-то еще между ними. То есть политика размера не кажется предсказуемой.

Обратите внимание, что я знаю, как сохранить / восстановить геометрию ранее созданного окна. Несмотря на дефекты QT и здесь, у меня есть рабочее решение.

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

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

Есть ли у кого-нибудь хорошие работоспособные решения?

5
задан edA-qa mort-ora-y 24 March 2011 в 09:41
поделиться