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







