【问题标题】:How to set QWidget fullscreen (but "real" fullscreen, change resolution, set modal to whole system)?如何设置 QWidget 全屏(但“真实”全屏,更改分辨率,将模式设置为整个系统)?
【发布时间】:2012-03-13 20:29:20
【问题描述】:

我正在尝试使用 Qt 制作游戏,因为它太棒了 ;) 而且你拥有所有你需要的东西都是免费的。唯一的问题是更改系统分辨率和设置 QWidget(或 QGLWidget)“真实”全屏。

你们中的任何人都设法做到了这样的事情吗?这种方法的可移植性如何?我想在所有桌面系统上部署我的应用程序。

也许使用 SDL 或 SMFL 之类的东西来使其全屏显示?

请分享你的技巧!

干杯。

【问题讨论】:

  • 我不知道如何从 Qt 库中更改屏幕分辨率。请问你有什么平台,万一linux用什么disto?
  • @Neox,我想跨平台更改分辨率,这样我就可以在 Qt 中开发重 openGL 的应用程序了。
  • 我会调查一下,一有发现就回复你
  • 电脑说不。 Qt 被设计为在操作系统内工作,而不是围绕它工作,这就解释了为什么似乎没有一种简单的方法可以做到这一点。
  • 或许你可以使用 GLUT 中提供的glutInitDisplayMode,但我不知道 Qt 是否愿意。

标签: c++ qt fullscreen resolution qwidget


【解决方案1】:

这...

my_widget->setWindowState(Qt::WindowFullScreen);

... 使您的小部件达到全屏分辨率。这不是你需要的吗?

编辑: 或者,您可以致电插槽showFullScreen

编辑 2:

  1. WIN API
    1. EnumDisplaySettings
    2. ChangeDisplaySettings
    3. Detailed information
  2. X11
    1. 我不熟悉这个,你可以在这里问一个关于如何更改屏幕分辨率的新问题
  3. 苹果机
    1. 同X11

【讨论】:

  • 不。这将使小部件的尺寸填充系统窗口。我想更改系统的分辨率,例如800x600,然后用我的小部件填充它并将其设置为模态。就像在游戏中一样。
  • 抱歉没听懂。您想更改系统分辨率,然后应用全屏。
  • 没错。前段时间我找到了使用 WINAPI 的解决方案,但显然我只会使用 Windows。
  • 关于这个问题bit.ly/x2sk3m 它说不可能通过Qt改变屏幕分辨率。对于 Windows,Win API 可以做到这一点,但我不知道 Linux、Mac 以及其他任何你想部署应用程序的地方。
  • 您还可以检查您的应用程序当前在哪个操作系统上运行,并取决于您调用了相应的函数(例如 Windows 的 WIN API)。有关如何获取操作系统的信息:bit.ly/Aeh2rP
【解决方案2】:

全屏:

topwidget->setWindowState(topwidget->windowState() ^ Qt::Window);

【讨论】:

    【解决方案3】:

    首先您必须设置相应的窗口标志以使您的窗口小部件成为模态,并摆脱窗口管理器框架,使其成为真正的全屏

    widget->setWindowFlags(Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint);

    然后像 Exa 所说的那样打电话给widget->showFullScreen();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 2014-06-10
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多