多监视器屏幕上的应用程序窗口和中心位置
问题描述:
我有一个QMainWindow
,它由另一个应用程序启动。多监视器屏幕上的应用程序窗口和中心位置
问题是,在多监视器设置中,启动我的QMainWindow
的应用程序可能驻留在第三个屏幕上,但我的窗口将始终在第一个屏幕上启动。
我以下列方式工作围绕这个...
QDesktopWidget *m = new QDesktopWidget();
QPoint p= QCursor::pos();
int r= m->screenNumber(p); //get the screennumber where the mouse is
QRect d=m->screenGeometry(r);
QPoint l = d.center(); //not the correct solution
mainWin->move(l); //move the window to that screen
mainWin->show(); //launch
现在,我该如何在屏幕中心推出这个窗口。 d.center()
不是正确的方法,因为窗口的顶部将从中心点启动,所以它会被遮挡。
请注意。
答
也许尝试这样的事:
void MainWindow::CenterToScreen(QWidget* widget) {
if (!widget)
return;
QDesktopWidget* m = QApplication::desktop();
QRect desk_rect = m->screenGeometry(m->screenNumber(QCursor::pos()));
int desk_x = desk_rect.width();
int desk_y = desk_rect.height();
int x = widget->width();
int y = widget->height();
widget->move(desk_x/2 - x/2 + desk_rect.left(), desk_y/2 - y/2 + desk_rect.top());
}
与用法:
CenterToScreen(this); // or CenterToScreen(mainWin);
谢谢。这个技巧很好。 – user1173240 2013-05-14 09:37:37