Vous devez utiliser l'API iOS native. Vous pouvez compiler le code ObjC++ directement avec le compilateur clang de votre application Qt.
Ainsi, vous pouvez mélanger .cpp
et .mm
(ObjC++) fichiers. QtCreator et qmake
supportent ceci via le mot-clé OBJECTIVE_SOURCES
.
Dans une mise en œuvre yourclass.mm
:
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
void YourClass::setTimerDisabled() {
[[UIApplication sharedApplication] setIdleTimerDisabled: YES]
}
yourclass.h
:
class YourClass
{
public:
void setTimerDisabled()
}
Maintenant, vous pouvez appeler à partir de n'importe où dans votre app Qt:
YourClass yc;
yc.setTimerDisbabled();
Dans votre fichier de projet (.pro
), si vous voulez seulement ce fichier sur iOS:
ios {
OBJECTIVE_SOURCES += \
yourclass.mm \
}
Et si vous ne voulez code indiqué sur une plate-forme unique, les commandes de préprocesseur utilisation dans vos fichiers source et en-tête comme ceci:
#if defined(Q_OS_IOS)
// iOs stuff
#elsif defined(Q_OS_ANDROID)
//Android stuff ...
#else
//Other stuff ...
#endif
merci Hubi! Mais maintenant j'ai le problème que qt ne peut pas trouver Foundation si je le compile pour Android. Mon application devrait fonctionner sur les deux systèmes d'exploitation. Pouvez-vous me donner un indice supplémentaire? –
J'ai mis à jour ma réponse. – Hubi
Maintenant, je peux tout compiler et l'App fonctionne sur l'IOS, mais malheureusement, l'affichage ne reste pas éveillé. Et dans Qt Creator, la ligne [[UIApplication ...] est affichée comme inconnue. Pouvez-vous m'aider une fois de plus? :) –