QT获取窗口坐标
1.通过桌面计算坐标
QRect screenGeometry = QApplication::desktop()->screenGeometry();
int x = (screenGeometry.width() - width()) / 2;
int y = (screenGeometry.height() - height()) / 2;
screenGeometry是获取桌面的像素。可以看一下显示器的分辨率,然后通过这个减去当前窗口的长和宽再除2就是窗口左上角的坐标。
2.通过窗口计算坐标
qDebug()<<frameGeometry().topLeft();
frameGeometry() 返回窗口的框架几何形状,包括窗口标题栏和边框。topLeft() 返回这个框架矩形的左上角坐标,这个坐标是相对于父窗口或者屏幕而言的,如果没有父窗口且窗口处于屏幕坐标系中,它也是相对于屏幕左上角而言。
3.区别
在下面这些情况下可能会稍有不同,所以使用的时候只用上面二选一避免产生误差。
窗口边框和标题栏影响
多显示器环境
窗口缩放和布局变化