私はMicrosoft Surface 3/4のQMLアプリを開発しており、向きをポートレートに固定する必要があります。私はQML/QTのQScreen/Screen
コンポーネントのsetOrientation()を期待していましたが、APIが見つかりません。QML 2で画面の向きをロックする方法は?
QT 5.9.1を使用しています。ご提案ください。
私はMicrosoft Surface 3/4のQMLアプリを開発しており、向きをポートレートに固定する必要があります。私はQML/QTのQScreen/Screen
コンポーネントのsetOrientation()を期待していましたが、APIが見つかりません。QML 2で画面の向きをロックする方法は?
QT 5.9.1を使用しています。ご提案ください。
@dtech回答も動作しますが、user32.lib
をリンクせずにこれを行う方法があります。ただ、main.cpp
にコードの下にペーストをコピーします。詳細については
#include <Windows.h>
typedef enum ORIENTATION_PREFERENCE {
ORIENTATION_PREFERENCE_NONE = 0x0,
ORIENTATION_PREFERENCE_LANDSCAPE = 0x1,
ORIENTATION_PREFERENCE_PORTRAIT = 0x2,
ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED = 0x4,
ORIENTATION_PREFERENCE_PORTRAIT_FLIPPED = 0x8
} ORIENTATION_PREFERENCE;
typedef BOOL (WINAPI *pSDARP)(ORIENTATION_PREFERENCE orientation);
pSDARP pARP;
pARP = (pSDARP) GetProcAddress(GetModuleHandle(TEXT("user32.dll")), "SetDisplayAutoRotationPreferences");
if(pARP){
pARP((ORIENTATION_PREFERENCE)(ORIENTATION_PREFERENCE_LANDSCAPE | ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED));
}
を参照してください。Handling Windows Auto-rotate feature in your application
外部で可能かもしれません(試したことがない、@dtech回答をご覧ください)。
のための情報、それは不可能です
QScreen
を使用して
"setOrientationを期待して()QML/QTでQScreen /スクリーン コンポーネントについて"。
QScreenプロパティのドキュメントを参照してください。
http://doc.qt.io/qt-5/qscreen.html#details
"nativeorientaion" のような向きに関連するすべてのプロパティ、 "方向 "と" primaryorientation"、彼らはすべてCONSTANT
プロパティです。
とQtのプロパティシステムは、定数プロパティが書き込み機能を持つことができない、と言っている:CONSTANT attibuteの
存在は、プロパティの値が一定であることを示しています。与えられたオブジェクトインスタンスに対して、定数プロパティのREADメソッドは呼び出されるたびに同じ値を返す必要があります。この定数値は、オブジェクトの異なるインスタンスごとに異なる場合があります。定数プロパティには、WRITEメソッドまたはNOTIFYシグナルを含めることはできません。
Qtでは何も提供していませんが、IMOは重要な省略です。あなたは、異なるシステムがそれをどのように扱うかに頼っています。幸いにも、それは窓のために非常に簡単です。あなたはmain.cppにして、現在のプロセスのためにそれを設定するには、WindowsのAPIを使用することができます。
// includes
#ifdef _WIN32
#include <windows.h>
#endif
// in main()
#ifdef _WIN32
SetDisplayAutoRotationPreferences(ORIENTATION_PREFERENCE_PORTRAIT);
#endif
あなたも、この作業を取得するためにUser32.lib
またはUser32.dll
に対してプロジェクトをリンクする必要があります。
私はアンドロイドのために、その上で何かを持っているとiOSそれが同じ場合のために、おそらく、外部から行われているQMLとは思いません窓。 – dtech
はいAndroidやiOSのサンプルがたくさん見つかりました.Windowsで外部からやってもらえますか? – pra7
あなたは画面の回転だけで暮らすことができます。あなたのルート項目に回転を設定することによって、 'Screen'-propertiesを見て自己に知らせることができます。これはすべてのOSで同じように動作するはずです。 – derM