使用 Qt 在辅助监视器上全屏显示窗口
Posted
技术标签:
【中文标题】使用 Qt 在辅助监视器上全屏显示窗口【英文标题】:Display window full screen on secondary monitor using Qt 【发布时间】:2010-07-08 11:37:12 【问题描述】:似乎可以使用本机控件(请参阅 here 和 here)所以现在我正在寻找一些 Qt 代码来做到这一点。
【问题讨论】:
【参考方案1】:我在 Windows 和 Linux 上成功使用此代码进行第二次全屏显示
QRect screenres = QApplication::desktop()->screenGeometry(1/*screenNumber*/);
SecondDisplay secondDisplay = new SecondDisplay(); // Use your QWidget
secondDisplay->move(QPoint(screenres.x(), screenres.y()));
secondDisplay->resize(screenres.width(), screenres.height());
secondDisplay->showFullScreen();
【讨论】:
这在 Qt5 中不再有效。 QWidget 显示在第一个屏幕上。 确认不能在 Qt5 上工作。设置全屏后移动窗口似乎可以工作。 我认为此代码的问题在于屏幕尺寸可能会有所不同,因此仅将全分辨率除以屏幕计数是一种赌博,可能取决于您的屏幕分辨率。【参考方案2】:在 Qt5 中这样做的一种方法是使用QWindow::setScreen
来设置应显示窗口的屏幕。 QWidget
有一个 windowHandle()
,它返回指向 QWindow
的指针。
以下是如何以全屏模式在第二个屏幕上显示您的小部件:
QWidget * widget = new QWidget();
widget->show();
widget->windowHandle()->setScreen(qApp->screens()[1]);
widget->showFullScreen();
【讨论】:
【参考方案3】:我对此的看法:
auto const desktop(QApplication::desktop());
setGeometry(desktop->screenGeometry(1));
#ifndef Q_OS_WIN
setWindowState(Qt::WindowState(Qt::WindowFullScreen | windowState()));
#endif // Q_OS_WIN
【讨论】:
【参考方案4】:先showFullScreen,然后setGeometry。
Qt5 测试正常
【讨论】:
您介意包含一个代码示例吗?这会让你的答案更有价值。 这实际上不起作用,调用setGeometry时WindowState恢复为NoState。【参考方案5】:这个问题在使用 window->showFullScreen() 而不是 window->show() 时得到了解决。
【讨论】:
以上是关于使用 Qt 在辅助监视器上全屏显示窗口的主要内容,如果未能解决你的问题,请参考以下文章