gpt4 book ai didi

qt - 多显示器屏幕上的应用程序窗口和中心放置

转载 作者:行者123 更新时间:2023-12-02 13:42:46 24 4
gpt4 key购买 nike

我有一个 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);

关于qt - 多显示器屏幕上的应用程序窗口和中心放置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16396127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com