Расположим окно Qt по центру экрана

Часто нужно чтобы окно «выскочило» под самым носом пользователя, а не в том месте где это придумалось менеджеру окон.
В Qt есть два основных способа «передвинуть» окно в нужное место.
1. Вычислить координаты центра экрана и переместить окно при помощи метода move:

void Window::moveToCenter() {
    QDesktopWidget desktop;
    QRect rect = desktop.availableGeometry(desktop.primaryScreen()); // прямоугольник с размерами экрана
    QPoint center = rect.center(); //координаты центра экрана
    center.setX(center.x() - (this->width()/2));  // учитываем половину ширины окна
    center.setY(center.y() - (this->height()/2));  // .. половину высоты
    move(center);
}

Думаю тут всё ясно.. так бы сделало 90% ( на мой взгляд ).
И второй метод, менее очевидный, но суть его таже:

void Window::moveToCenter(){
    QRect rect = frameGeometry();
    rect.moveCenter(QDesktopWidget().availableGeometry().center());
    move(frect.topLeft());
}

Что лучше? Я и сам по этому поводу не в курсе дел, но скорее всего особой производительности вы и не потеряли и не выиграли ни в одном из методов.

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий