Центрирование главного окна
Linux, Qt 6.6 Необходимо отцентрировать главное окно приложения.
Использую следующий код в main:
QApplication a(argc, argv);
DPSMainWindow w;
// w.size.width = 800 w.size.height = 600
QPoint center = QGuiApplication::primaryScreen()->geometry().center();
//Center.x = 959 Center.y = 539
int x = center.x() - (w.width()/2);
int y = center.y() - (w.height()/2);
center.setX(x);
center.setY(y);
// Center.x = 559 Center.y = 239
w.show();
w.move(center);
return a.exec();
окно не центрируется.
В чем могут быть проблемы?
Ответы (1 шт):
Автор решения: needKVAS
→ Ссылка
Вы не учитываете рамку окна и не учитываете уменьшенную рабочую область экрана.
//Геометрия с учётом панели задач
QPoint center = QGuiApplication::primaryScreen()->availableGeometry().center();
w.show();
//Геометрия с учётом рамки окна
QRect frame = w.frameGeometry();
int x = center.x() - (frame.width()/2);
int y = center.y() - (frame.height()/2);
center.setX(x);
center.setY(y);
w.move(center);
Здесь show()
вызван до расчёта местоположения т.к. до вызова данного метода рамки окна не существует.