在Qt中禁用屏幕旋转

问题描述:

有没有简单的方法来禁用整个应用程序的Qt中的屏幕旋转?我只是不想担心这一点,只是简单地禁用它。在Qt中禁用屏幕旋转

我正在使用Qt 5.8并定位Windows。

+2

对不起,但屏幕旋转是Windows应用程序的一个问题?我没有看到屏幕旋转将会成为任何桌面平台的问题吗?感谢您的启发:-) – Danyright

+0

@Danyright这不是一个问题,不是因为桌面不改变屏幕方向,而是因为屏幕旋转看起来像一个应用程序就像分辨率改变会。换句话说,它几乎是无关紧要的。 –

+0

我忘了提及它的平板电脑应用程序。 – naide

最好的方法是禁用Windows中的旋转。 我看到的唯一另一种方式是显示根据当前设备方向旋转的小部件/ qml。 下面是Windows下,获得当前方向的代码(在Windows 8.1平板电脑测试):

#include <Windows.h> 

enum class EOrientation 
{ 
    Rotate_0, 
    Rotate_90, 
    Rotate_180, 
    Rotate_270 
}; 

EOrientation CYourViewManager::getOrientation() const 
{ 
    DEVMODE deviceMode; 

    if (!EnumDisplaySettings(NULL, 0, &deviceMode)) 
    return EOrientation::Rotate_0; 

    switch (deviceMode.dmDisplayOrientation) 
    { 
    case DMDO_90: 
     return EOrientation::Rotate_90; 

    case DMDO_180: 
     return EOrientation::Rotate_180; 

    case DMDO_270: 
     return EOrientation::Rotate_270; 
    } 

    return EOrientation::Rotate_0; 
} 

这是没有意义的,因为从你的角度屏幕旋转相同的屏幕分辨率的变化,如果你把关闭,您的用户将会正确地讨厌你。

如果您希望测试代码与屏幕旋转的兼容性,请通过更改屏幕分辨率来模拟它。