Вопрос

Есть ли способ указать начальную позицию дочернего окна в Qt?

У меня есть приложение, которое работает в Linux и Windows, и похоже, что поведение Qt по умолчанию позволяет диспетчеру окон определять размещение дочерних окон.

В Windows это находится в центре экрана, на котором находится родительский элемент, что кажется разумным.

В Linux в GNOME (metacity) он всегда находится в верхнем левом углу, что раздражает.Я не могу найти какие-либо настройки оконного менеджера для Metacity, которые позволили бы мне контролировать размещение окон, поэтому я хотел бы переопределить это поведение.

Это было полезно?

Решение

Геометрия виджета Qt

Перед вызовом show() вызовите метод move(x, y) в дочернем окне.Значения по умолчанию для x и y равны 0, поэтому они отображаются в верхнем левом углу.
Вы также можете использовать положение родительского окна для вычисления относительного положения дочернего окна.

Другие советы

Как правило, я бы рекомендовал не навязывать положение окон, если только ваше приложение не предъявляет особых требований к оконному оформлению.Задача оконного менеджера — определять, где размещаются новые окна, и большинство из них хорошо справляются со своей задачей.Если MetaCity не выбирает хорошую позицию, то это его проблема.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top