QR Code
QR Codeは、エンコードのために提供されたコンテンツとフォアグラウンドとバックグラウンドそれぞれに指定された色を使用してQRコードを描画できるウィジェットです。
Note
TouchGFX Designerのキャンバスに表示されるプレビューQRコードは、常にウィジェットのドキュメントにリンクする静的な例です。
シミュレータまたはターゲットでアプリケーションを実行して、ユーザが提供したテキストを使用して実際に生成されるQRコードを確認します。
ウィジェット・グループ
QR Codeは、TouchGFX DesignerのImagesウィジェット・グループ内にあります。
TouchGFX DesignerのQR Codeのプロパティ
プロパティ・グループ | プロパティの説明 |
---|---|
Name | ウィジェットの名前。 Nameは、TouchGFX Designerおよびコードで使用される一意の識別子です。 |
Location | XおよびYは、親を基準としてウィジェットの左上隅の位置を指定します。 ウィジェットのサイズは、QR Codeのバージョンで決まります。 Lockは、ウィジェットを現在のXとYでロックするかどうかを指定します。 ウィジェットをロックすると、スクリーンを通したウィジェットとのインタラクションも無効になります。 Visibleは、ウィジェットの可視性を指定します。 ウィジェットを非表示にすると、スクリーンを通じたウィジェットとのインタラクションも無効になります。 |
Configuration | QR Versionは、バージョン1~40のQR Codeを指定します。 バージョン1のサイズは21x21 "bit"です。 バージョン40のサイズは177x177 "bit"です。 Scaleは、QRコードを描画するスケールを指定します。 Textは、QRコードにエンコードするコンテンツを指定します。 Error Correction Codeは、誤ったコードワードの許容レベルを指定します。 |
Appearance | **Alphaは、ウィジェットの透明度を指定します。 ウィジェットのアルファ値の範囲は、0~255です。 0は完全に透明で、255は塗りつぶされた状態です。 Foregroundは、フォアグラウンドに使用する色を指定します。 デフォルトは黒です。 Backgroundは、バックグラウンドに使用する色を指定します。 デフォルトは白です。 |
Mixin | Draggableは、ウィジェットが実行時にドラッグ可能かどうかを指定します。 ClickListenerは、ウィジェットがクリックされたときにコールバックを発行するかどうかを指定します。 FadeAnimatorは、ウィジェットがAlpha値への変更をアニメーション化できるかどうかを指定します。 MoveAnimatorは、ウィジェットがXおよびY値への変更をアニメーション化できるかどうかを指定します。 |
インタラクション
TouchGFX DesignerでQR Codeによってサポートされるアクションとトリガは以下のとおりです。
アクション
標準のウィジェット・アクション | 説明 |
---|---|
Move widget | 時間の経過に伴ってウィジェットを新しい位置に移動します。 |
Fade widget | 時間の経過に伴ってウィジェットのアルファ値を変更します。 |
Hide widget | ウィジェットを非表示にします(可視性をfalseに設定します)。 |
Show widget | 非表示のウィジェットを表示します(可視性をtrueに設定します)。 |
トリガ
QR Codeはトリガを発行しません。
パフォーマンス
QR Codeウィジェットのパフォーマンスは、ピクセルが計算されるため画像より低下しますが、単純なアニメーションの一部としてスクリーン上をあちこち移動したり、フェードインするのに十分な速さはあります。
描画パフォーマンスの詳細については、「一般的なUIコンポーネントのパフォーマンス」セクションを参照してください。
例
生成されたコード
View基底クラスの生成済みコードを見ると、TouchGFX DesignerによるQR Codeの設定方法がわかります。 バッファはヘッダ・ファイルで設定されます(ハイライト表示された行を参照)。 これらは、QRコードのビット値の計算と保存に使用されます。
Screen1ViewBase.hpp
#ifndef SCREEN1VIEWBASE_HPP
#define SCREEN1VIEWBASE_HPP
#include <gui/common/FrontendApplication.hpp>
#include <mvp/View.hpp>
#include <gui/screen1_screen/Screen1Presenter.hpp>
#include <touchgfx/widgets/Box.hpp>
#include <touchgfx/widgets/QRCode.hpp>
class Screen1ViewBase : public touchgfx::View<Screen1Presenter>
{
public:
Screen1ViewBase();
virtual ~Screen1ViewBase();
virtual void setupScreen();
protected:
FrontendApplication& application() {
return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance());
}
/*
* Member Declarations
*/
touchgfx::Box __background;
uint8_t qrBuffer_qrCode1[QRCODE_BUFFER_SIZE(1)];
uint8_t qrScratchBuffer_qrCode1[QRCODE_BUFFER_SIZE(1)];
touchgfx::QRCode qrCode1;
private:
};
#endif // SCREEN1VIEWBASE_HPP
Screen1ViewBase.cpp
#include <gui_generated/screen1_screen/Screen1ViewBase.hpp>
#include <touchgfx/Color.hpp>
Screen1ViewBase::Screen1ViewBase()
{
qrCode1.setXY(0, 0);
qrCode1.setBuffers(qrBuffer_qrCode1, qrScratchBuffer_qrCode1);
qrCode1.setQRCodeVersion(1);
qrCode1.setScale(5);
qrCode1.convertStringToQRCode("SUPPORT.TOUCHGFX.COM");
add(qrCode1);
}
Screen1ViewBase::~Screen1ViewBase()
{
}
void Screen1ViewBase::setupScreen()
{
}
Caution
文字列がQRCode(レベルに応じて)に収まらないほど長い場合は、関数
convertStringToQRCode
が失敗する場合があります。ユーザは関数の戻り値をチェックする必要があります。
Tip
ユーザ・コードでは、これらの関数や、QRCodeクラスで使用可能なその他の関数を使用できます。 ウィジェットの外観を変更する場合は、
qrCode1.invalidate()
を呼び出して、再描画する必要があることに注意してください。