如何使用 Qt 防止屏幕锁定 ios

How to prevent Screen lock ios with Qt

我想在 Qt 中为 iOS 开发一个包含地图的应用程序。在使用过程中,phone的屏幕锁应该被关闭。 但是我找不到任何解决方案如何使用 Qt 防止 iOS 中的屏幕锁定。

如何做到这一点?

您必须使用本机 iOS api。您可以在 Qt 应用程序中直接使用 clang 编译器编译 ObjC++ 代码。

因此您可以混合使用 .cpp.mm (ObjC++) 文件。 QtCreator 和 qmake 通过 OBJECTIVE_SOURCES 关键字支持这一点。

yourclass.mm 实施中:

    #import <Foundation/Foundation.h>
    #import <UIKit/UIKit.h>

    void YourClass::setTimerDisabled() {
        [[UIApplication sharedApplication] setIdleTimerDisabled: YES] 
    }

yourclass.h:

class YourClass
{
public:
   void setTimerDisabled()
}

现在您可以从 Qt 应用程序的任何位置调用:

YourClass yc;
yc.setTimerDisbabled();

在您的项目文件 (.pro) 中,如果您只想在 iOS 上使用此文件:

ios {
OBJECTIVE_SOURCES += \
    yourclass.mm \
}

如果您只想在单个平台上使用指定代码,请在源文件和头文件中使用预处理器命令,如下所示:

#if defined(Q_OS_IOS)
   // iOs stuff
#elsif defined(Q_OS_ANDROID)
   //Android stuff ...
#else
  //Other stuff ...
#endif