4

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

怎么能做到这一点?

4

1 回答 1

8

您必须使用本机 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
于 2015-09-25T07:55:23.707 回答