【问题标题】:Display window full screen on secondary monitor using Qt使用 Qt 在辅助监视器上全屏显示窗口
【发布时间】:2010-07-08 11:37:12
【问题描述】:

似乎可以使用本机控件(请参阅 herehere)所以现在我正在寻找一些 Qt 代码来做到这一点。

【问题讨论】:

    标签: 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() 时得到了解决。

        【讨论】:

          猜你喜欢
          • 2010-09-28
          • 1970-01-01
          • 1970-01-01
          • 2014-12-04
          • 2010-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多