Qtアプリケーションでの横スクリーンまたは縦スクリーンの強制使用


Qtアプリケーションでの横スクリーンまたは縦スクリーンの強制使用
From Forum Nokia Wiki
要旨:Qt for Symbianプログラムでは、携帯電話の水平状態が変化したときに横画面や縦画面を強制的に使用する方法を紹介します.
水平センサー付きのSymbian携帯電話では、ユーザーが横画面モード(Landscape)から縦画面モード(Portrait)に切り替えると、自動的に携帯電話の画面表示方向を調整し、ユーザーの正常な使用ニーズを満たす.画面の横幅比の変化は、ウィンドウのレイアウトを調整して、より良いユーザー体験を保証する必要があります.
しかし、ゲームなどの特殊な場合、開発者は携帯電話の水平状態が変化しても、画面が元の画面方向を維持し続ける必要があることを望んでいる可能性があり、ユーザーに横画面や縦画面方向で現在のアプリケーションしか使用できないことを提示する必要があります.これは、設置することによって、携帯電話の画面を横画面や縦画面の状態に強制する必要があります.
Qtの現在のバージョン(Qt-4.6.2)では、Symbianの携帯電話の画面モードを直接制御するAPIは提供されておらず、SymbianのAPIを使用することで完了する必要がある.API関数の設定:CAknAppUi::SetOrientationL();Qtでの使用表示コードは以下の通りである.
#ifdef Q_OS_SYMBIAN
void MyWidget::setPortraitMode()
{
    CAknAppUi *aknAppUi = dynamic_cast<CAknAppUi *>(CEikonEnv::Static()->AppUi());
    if (aknAppUi)
        aknAppUi->SetOrientationL(CAknAppUi::EAppUiOrientationPortrait);
}
 
void MyWidget::setLandscapeMode()
{
    CAknAppUi *aknAppUi = dynamic_cast<CAknAppUi *>(CEikonEnv::Static()->AppUi());
    if (aknAppUi)
        aknAppUi->SetOrientationL(CAknAppUi::EAppUiOrientationLandscape);
}
#endif

上のコードのSymbian関数を使用するには、symbianのいくつかの関連ヘッダファイルをソースコードに追加する必要があります.
#ifdef Q_OS_SYMBIAN
#include <eikenv.h>
#include <coemain.h>
#include <aknappui.h>
#endif

また、Qtの.proエンジニアリングファイルに以下の内容を追加し、アプリケーションがコンパイルとリンクできることを保証する必要があります.
symbian {
    LIBS += -lconnmon -lcone -lavkon
}

注意:この機能はシミュレータではシミュレータできませんが、Symbianの携帯電話では正常に動作しています.