【发布时间】:2015-09-25 06:06:05
【问题描述】:
我想在 Qt for iOS 中开发一个包含地图的应用程序。使用过程中,手机的锁屏功能应关闭。 但我找不到任何解决方案如何使用 Qt 防止 iOS 中的屏幕锁定。
如何做到这一点?
【问题讨论】:
标签: ios qt screen qml screen-lock
我想在 Qt for iOS 中开发一个包含地图的应用程序。使用过程中,手机的锁屏功能应关闭。 但我找不到任何解决方案如何使用 Qt 防止 iOS 中的屏幕锁定。
如何做到这一点?
【问题讨论】:
标签: ios qt screen qml screen-lock
您必须使用原生 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
【讨论】: