Часто нужно чтобы окно «выскочило» под самым носом пользователя, а не в том месте где это придумалось менеджеру окон.
В 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()); }
Что лучше? Я и сам по этому поводу не в курсе дел, но скорее всего особой производительности вы и не потеряли и не выиграли ни в одном из методов.