如何将QWidget设置为全屏(但是“真正”的全屏,可以改变分辨率,将模态设置为整个系统)?

5
我正在尝试使用Qt制作游戏,因为Qt非常棒;),而且你可以免费获取所需的所有东西。唯一的问题在于更改系统分辨率和设置QWidget(或QGLWidget)“真正”的全屏。

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

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

请分享您的窍门!

干杯。


据我所知,无法通过Qt库内部更改屏幕分辨率。请问您使用的是哪个平台?如果是Linux系统,请问是哪个发行版? - Neox
@Neox,我想跨平台更改分辨率,以便我可以在Qt中开发OpenGL重型应用程序。 - neciu
我会仔细看一下这个,找到有用的信息后会尽快回复你。 - Neox
1
计算机说不。Qt被设计为在操作系统内部工作,而不是绕过它,这就解释了为什么似乎没有简单的方法来做到这一点。 - Samuel Harmer
也许你可以使用 GLUT 中可用的 glutInitDisplayMode,但我不知道 Qt 是否支持它。 - linello
3个回答

11

这个问题看起来可能是由于没有包括正确的JavaScript文件而导致的。请确保你已经包含了jQuery库和Bootstrap的相关文件。

my_widget->setWindowState(Qt::WindowFullScreen);

...将您的小部件带入全屏分辨率。这不是您所需要的吗?

编辑: 或者您可以调用插槽showFullScreen

编辑 2:

  1. WIN API
    1. EnumDisplaySettings
    2. ChangeDisplaySettings
    3. 详细信息
  2. X11
    1. 我对此不熟悉,您可以就如何在这里更改屏幕分辨率提出新问题
  3. Mac
    1. 与X11相同

1
不行。这会使小部件的尺寸填充系统窗口。我想改变系统的分辨率,例如800x600,然后用我的小部件填充它并设置为模态。就像在游戏中一样。 - neciu
啊,抱歉没明白。您想要改变系统分辨率然后应用全屏吗? - Exa
没错。之前我找到了一个使用WINAPI的解决方案,但显然我只能在Windows上工作。 - neciu
在这个问题http://bit.ly/x2sk3m中说Qt无法改变屏幕分辨率。对于Windows,Win API可以做到,但我不知道Linux、Mac或其他你想部署应用程序的地方是否行得通。 - Exa
您还可以检查应用程序当前运行的操作系统,并根据此调用相应的函数(例如,Windows 的 WIN API)。有关如何获取操作系统的信息,请访问:http://bit.ly/Aeh2rP。 - Exa
谢谢,这是向前迈进的一步。现在我需要一些代码片段来改变分辨率并将QWidget拉伸到整个屏幕上。因此我会为您的建议点个赞。 - neciu

3

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

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

之后,像Exa所说,调用widget->showFullScreen();


0
全屏模式:
topwidget->setWindowState(topwidget->windowState() ^ Qt::Window);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接