TapHandler QML Type
タップとクリックのハンドラ。もっと見る...
Import Statement: | import QtQuick |
Inherits: |
プロパティ
- acceptedButtons : flags
- acceptedDevices : flags
- acceptedModifiers : flags
- acceptedPointerTypes : flags
- active : bool
- cursorShape : Qt::CursorShape
- dragThreshold : int
- enabled : bool
- exclusiveSignals : enumeration
(since 6.5)
- gesturePolicy : enumeration
- grabPermissions : flags
- longPressThreshold : real
- margin : real
- parent : Item
- point : handlerPoint
- pressed : bool
- tapCount : int
- target : Item
- timeHeld : real
シグナル
- canceled(eventPoint point)
- doubleTapped(eventPoint eventPoint, Qt::MouseButton button)
- grabChanged(PointerDevice::GrabTransition transition, eventPoint point)
- longPressed()
- singleTapped(eventPoint eventPoint, Qt::MouseButton button)
- tapCountChanged()
- tapped(eventPoint eventPoint, Qt::MouseButton button)
詳細説明
TapHandler は、タッチスクリーンのタップやマウスのクリックのハンドラです。
有効なタップジェスチャの検出はgesturePolicy に依存します。デフォルト値は DragThreshold で、押下と放 置が空間的にも時間的にも近接している必要があります。この場合、DragHandler は受動的な掴みだけで機能するため、他のアイテムや入力ハンドラへのイベント配信を妨げません。したがって、デフォルトのgesturePolicy は、バインディングおよび/または JavaScript コールバックを持つ TapHandler を追加して、既存のコントロールまたはアイテムの動作を変更したい場合に便利です。
QPushButtonボタンを押してから気が変わったら、クリックをキャンセルするためにボタンの端からずっとドラッグする必要があります。この使用例では、gesturePolicy をTapHandler.ReleaseWithinBounds
に設定します。
import QtQuick Rectangle { id: button signal clicked property alias text: buttonLabel.text height: Math.max(Screen.pixelDensity * 7, buttonLabel.implicitHeight * 1.2) width: Math.max(Screen.pixelDensity * 11, buttonLabel.implicitWidth * 1.3) radius: 3 property color dark: Qt.darker(palette.button, 1.3) gradient: Gradient { GradientStop { position: 0.0; color: tapHandler.pressed ? dark : palette.button } GradientStop { position: 1.0; color: dark } } TapHandler { id: tapHandler gesturePolicy: TapHandler.ReleaseWithinBounds onTapped: button.clicked() } Text { id: buttonLabel text: "Click Me" color: palette.buttonText anchors.centerIn: parent } }
マルチタップジェスチャー(ダブルタップ、トリプルタップなど)の場合、移動距離はマウスでQStyleHints::mouseDoubleClickDistance ()、タッチでQStyleHints::touchDoubleTapDistance ()を超えてはならず、タップ間の時間はQStyleHints::mouseDoubleClickInterval ()を超えてはなりません。
MouseArea およびQt Quick Examples - Pointer Handlersも参照してください 。
プロパティのドキュメント
acceptedButtons : flags |
このポインタハンドラをアクティブにできるマウスボタン。
デフォルトでは、このプロパティはQt.LeftButton に設定されています。 マウスボタンの OR の組み合わせに設定することができ、他のボタンからのイベントは無視されます。
例えば、コントロールが左クリックと右クリックに異なる方法で反応するように、2つのハンドラを設定することができます:
Item { TapHandler { onTapped: console.log("left clicked") } TapHandler { acceptedButtons: Qt.RightButton onTapped: console.log("right clicked") } }
注: タッチスクリーンをタップしたり、グラフィックタブレットのスタイラスをタップしたりすると、マウスの左ボタンをクリックしたことになります。この動作はacceptedDevices またはacceptedPointerTypes で変更できます。
acceptedDevices : flags |
このポインタハンドラをアクティブにできるポインティングデバイスのタイプ。
デフォルトでは、このプロパティはPointerDevice.AllDevices に設定されています。 デバイスタイプの OR の組み合わせに設定すると、一致しないデバイスからのイベントは無視されます。
例えば、マウスやスタイラスのクリックに反応するコントロールと、タッチスクリーンのタップに反応するコントロールを、2つのハンドラで使い分けることができます:
Item { TapHandler { acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad | PointerDevice.Stylus onTapped: console.log("clicked") } TapHandler { acceptedDevices: PointerDevice.TouchScreen onTapped: console.log("tapped") } }
注意: すべてのプラットフォームがマウスとタッチパッドを区別できるわけではありません。区別できるプラットフォームでは、マウスとタッチパッドの動作を同じにしたい場合がよくあります。
acceptedModifiers : flags |
このプロパティが設定されると、ポインタ・イベントに反応するために、指定されたキーボード修飾子が押されることを要求し、そうでなければ無視します。
このプロパティがQt.KeyboardModifierMask
(デフォルト値)に設定されている場合、PointerHandler は修飾キーを無視します。
例えば、Item は同じタイプのハンドラを2つ持つことができ、そのうちの1つは、必要なキーボード修飾子が押された場合にのみ有効になる:
Item { TapHandler { acceptedModifiers: Qt.ControlModifier onTapped: console.log("control-tapped") } TapHandler { acceptedModifiers: Qt.NoModifier onTapped: console.log("tapped") } }
acceptedModifiers
を修飾キーの OR の組み合わせに設定した場合、ハンドラを有効にするには、それらの修飾キーがすべて押されなければならないことを意味します:
Item { TapHandler { acceptedModifiers: Qt.ControlModifier | Qt.AltModifier | Qt.ShiftModifier onTapped: console.log("control-alt-shift-tapped") } }
使用可能な修飾子は以下の通りです:
定数 | 説明 |
---|---|
NoModifier | 修飾キーは使用できません。 |
ShiftModifier | キーボードのShiftキーが押されていなければならない。 |
ControlModifier | キーボードの Ctrl キーが押されていなければならない。 |
AltModifier | キーボードのAltキーが押されていること。 |
MetaModifier | キーボードのMetaキーが押されていなければならない。 |
KeypadModifier | キーパッドのボタンが押されていること。 |
GroupSwitchModifier | X11のみ(Windowsではコマンドライン引数で有効にしない)。キーボードのMode_switchキーが押されていなければならない。 |
KeyboardModifierMask | ハンドラーは、どの修飾子が押されたかは気にしない。 |
複数のハンドラと複数の修飾子フラグの組み合わせで実現できるよりもさらに複雑な動作が必要な場合は、JavaScriptコードで修飾子をチェックできます:
Item { TapHandler { onTapped: switch (point.modifiers) { case Qt.ControlModifier | Qt.AltModifier: console.log("CTRL+ALT"); break; case Qt.ControlModifier | Qt.AltModifier | Qt.MetaModifier: console.log("CTRL+META+ALT"); break; default: console.log("other modifiers", point.modifiers); break; } } }
Qt::KeyboardModifierも参照してください 。
acceptedPointerTypes : flags |
このポインタ・ハンドラをアクティブにできるポインティング・インストゥルメントのタイプ(指、スタイラス、消しゴムなど)。
デフォルトでは、このプロパティはPointerDevice.AllPointerTypes に設定されています。デバイスタイプの OR の組み合わせに設定すると、一致しないdevices からのイベントは無視されます。
たとえば、マウス、タッチ、スタイラスのクリックには何らかの方法で反応するが、グラフィック・タブレットの消しゴムツールでタップすると自身を削除するようなコントロールを、2つのハンドラで作成することができます:
Rectangle { id: rect TapHandler { acceptedPointerTypes: PointerDevice.Generic | PointerDevice.Finger | PointerDevice.Pen onTapped: console.log("clicked") } TapHandler { acceptedPointerTypes: PointerDevice.Eraser onTapped: rect.destroy() } }
active : bool |
これは、この入力ハンドラが1つまたは複数のeventPoints 、それらのポイントの排他的なグラブを成功させることで、そのハンドラを渡すための唯一の責任を取ったときはいつでも、true
を保持します。これは、それらのイベントポイントの動きに応じて、そのプロパティを最新に保ち、target (もしあれば)を積極的に操作していることを意味する。
cursorShape : Qt::CursorShape |
このプロパティは、active がtrue
である間、マウスがparent アイテムの上に置かれるたびに表示されるカーソル形状を保持する。
利用可能なカーソル形状は以下の通りです:
- Qt.ArrowCursor
- Qt.UpArrowCursor
- Qt.CrossCursor
- Qt.WaitCursor
- Qt.IBeamCursor
- Qt.SizeVerCursor
- Qt.SizeHorCursor
- Qt.SizeBDiagCursor
- Qt.SizeFDiagCursor
- Qt.SizeAllCursor
- Qt.BlankCursor
- Qt.SplitVCursor
- Qt.SplitHCursor
- Qt.PointingHandCursor
- Qt.ForbiddenCursor
- Qt.WhatsThisCursor
- Qt.BusyCursor
- Qt.OpenHandCursor
- Qt.ClosedHandCursor
- Qt.DragCopyCursor
- Qt.DragMoveCursor
- Qt.DragLinkCursor
デフォルト値は設定されていないため、parent アイテムのcursor が表示されます。このプロパティは、undefined に設定することで、同じ初期状態に戻すことができます。
注意: このプロパティが設定されていない場合、またはundefined
に設定されている場合、値を読み取るとQt.ArrowCursor
が返されます。
Qt::CursorShape 、QQuickItem::cursor()、HoverHandler::cursorShapeも参照のこと 。
dragThreshold : int |
ドラッグ ジェスチャとして扱うために、ユーザーがeventPoint をドラッグしなければならない距離をピクセル単位で指定します。
デフォルト値はプラットフォームと画面解像度によって異なります。undefinedに設定することで、デフォルト値に戻すことができます。ドラッグ ジェスチャが開始したときの動作は、ハンドラによって異なります。
enabled : bool |
PointerHandler が無効になっている場合、すべてのイベントが拒否され、シグナルは出力されません。
exclusiveSignals : enumeration |
singleTapped() とdoubleTapped() シグナルの排他性を決定します。
定数 | 説明 |
---|---|
NotExclusive | (デフォルト)singleTapped() とdoubleTapped() は、それぞれユーザーが1回または2回タップしたときに即座に発せられます。 |
SingleTap | singleTapped() は、ユーザが1回タップすると即座に発せられ、doubleTapped() は発せられない。 |
DoubleTap | doubleTapped() は、ユーザーが2回タップすると即座に発せられ、singleTapped() は発せられない。 |
(SingleTap | DoubleTap) | どちらの信号もQStyleHints::mouseDoubleClickInterval()まで遅延されるため、singleTapped()かdoubleTapped()のどちらかを発することはできるが、両方を発することはできない。しかし、mouseDoubleClickInterval 内に3回以上のタップが発生すると、どちらのシグナルも発せられない。 |
注: tapped() やtapCountChanged() などの残りのシグナルは、このプロパティに関係なく、常に即座に発行されます。
このプロパティはQt 6.5で導入されました。
gesturePolicy : enumeration |
longPressThreshold が経過する前にリリースされなければならないという制約に加えて、タップまたは長押しジェスチャが認識されるための空間的制約。これらの制約が満たされない場合、tapped シグナルは発行されず、tapCount はインクリメントされません。空間的制約に違反した場合、pressed 、保持された時間に関係なく、直ちにtrueからfalseに遷移する。
gesturePolicy
は、後述するグラブの動作にも影響する。
定数 | 説明 |
---|---|
TapHandler.DragThreshold プレス時のグラブ:パッシブ | (デフォルト値)eventPoint を大きく動かしてはいけません。マウス、指、またはスタイラスがシステム全体のドラッグしきい値 (QStyleHints::startDragDistance) を超えて移動した場合、デバイスまたは指が押されたままであっても、タップジェスチャはキャンセルされます。このポリシーは、TapHandler が他の入力ハンドラ(たとえば、DragHandler )やイベント処理アイテム(たとえば、Qt Quick Controls)と協力する必要があるときはいつでも便利です。この場合、TapHandler は排他的なグラブを取らず、単にpassive grab を取るからです。つまり、DragThreshold は既存の動作を補強するのに特に便利です。別のアイテムやハンドラがすでに反応しているときでも、おそらく UI の別のレイヤでも、タップ/クリック/長押しに反応します。次のスニペットは、1つのコンポーネントで使用される1つのTapHandler 。しかし、コンポーネントのインスタンスを2つ重ねると、受動的なグラブはイベント伝播を止めないので、それらの両方でプレスが発生したときに、それらの両方のハンドラが同時に反応するのがわかります:Item { width: 120; height: 80 component Button : Rectangle { TapHandler { id: tapHandler gesturePolicy: TapHandler.DragThreshold // the default onTapped: tapFlash.start() } } Button { x: 10; y: 10 } Button { x: 30; y: 30 } } |
TapHandler.WithinBounds プレス時のグラブ:排他的 | eventPoint がparent アイテムの境界を離れると、タップジェスチャはキャンセルされます。TapHandler は押されたexclusive grab を取りますが、境界の制約が満たされなくなるとすぐにグラブを離します。TapHandler { id: tapHandler gesturePolicy: TapHandler.WithinBounds onTapped: tapFlash.start() } |
TapHandler.ReleaseWithinBounds プレス時のグラブ:排他的 | リリース時(マウスボタンが離されるか、指が持ち上げられる)、eventPoint がparent アイテムの境界の外にある場合、タップジェスチャは認識されません。これは、ボタンウィジェットの典型的な動作に対応しています。ボタンの外側をドラッグすることでクリックをキャンセルでき、リリース前にボタンの内側をドラッグして戻ることで変更することもできます。このジェスチャーを検出するには、TapHandler が押下時にexclusive grab を取得し、離すまで保持する必要があることに注意してください。TapHandler { id: tapHandler gesturePolicy: TapHandler.ReleaseWithinBounds onTapped: tapFlash.start() } |
TapHandler.DragWithinBounds 押下時につかむ:排他的 | 押されたとき、TapHandler はexclusive grab を取ります。その後、eventPoint はparent アイテムの境界内でドラッグできます。timeHeld プロパティはカウントを続け、longPressed() シグナルはドラッグ距離に関係なく発せられます。ただし、WithinBounds と同様に、ポイントが境界を離れると、タップ・ジェスチャーはcanceled() となり、active() は false となり、timeHeld はカウントを停止します。これは、単一のTapHandler が押下を検出し、timeHeld が「開く」アニメーションを駆動し、ユーザーがメニュー項目にドラッグして離すことができ、メニューを含む親シーンの境界を離れることがない、メニューのような押下-ドラッグ-離すコンポーネントの実装に適しています。この値は Qt 6.3 で追加されました。TapHandler { id: menuPopupHandler gesturePolicy: TapHandler.DragWithinBounds onPressedChanged: if (pressed) { menu.x = point.position.x - menu.width / 2 menu.y = point.position.y - menu.height / 2 } else { feedback.text = menu.highlightedMenuItem selectFlash.start() } onCanceled: feedback.text = "canceled" } |
Qt Quick Examples - Pointer Handlersでは、これらの使用例をいくつか紹介しています。
注意: TapHandler が他の動作と衝突するようなケースで反応する場合、最初に試すべきことは、どのgesturePolicy
が適切かを考えることです。gesturePolicy
を変更することで修正できない場合、いくつかのケースは、このハンドラ、あるいはTapHandler が反応するのを防ぐべき別のハンドラで、grabPermissions を調整する方がよい。
grabPermissions : flags |
このプロパティは、このハンドラのロジックが排他グラブを引き継ぐことを決定したとき、または他のハンドラによってグラブの引き継ぎやキャンセルを承認するよう求められたときのパーミッションを指定します。
定数 | 説明 |
---|---|
PointerHandler.TakeOverForbidden | このハンドラは、ItemまたはHandlerのどのタイプからもグラブ許可を取らず、与えません。 |
PointerHandler.CanTakeOverFromHandlersOfSameType | このハンドラは、同じクラスの他のハンドラから排他的グラブを取ることができます。 |
PointerHandler.CanTakeOverFromHandlersOfDifferentType | このハンドラは、あらゆる種類のハンドラから排他的なグラブを取ることができます。 |
PointerHandler.CanTakeOverFromItems | このハンドラは、どのタイプのItemからも排他的グラブを取ることができます。 |
PointerHandler.CanTakeOverFromAnything | このハンドラは、どのタイプのアイテムまたはハンドラからも排他的グラブを取ることができます。 |
PointerHandler.ApprovesTakeOverByHandlersOfSameType | このハンドラーは、同じクラスの他のハンドラーがグラブを取ることを許可します。 |
PointerHandler.ApprovesTakeOverByHandlersOfDifferentType | このハンドラーは、あらゆる種類のハンドラーがグラブを取ることを許可します。 |
PointerHandler.ApprovesTakeOverByItems | このハンドラーは、あらゆる種類のItemがグラブを取ることを許可します。 |
PointerHandler.ApprovesCancellation | このハンドラは、そのグラブが null に設定されることを許可します。 |
PointerHandler.ApprovesTakeOverByAnything | このハンドラはどんな種類のItemやハンドラにもグラブを取る許可を与えます。 |
デフォルトはPointerHandler.CanTakeOverFromItems | PointerHandler.CanTakeOverFromHandlersOfDifferentType | PointerHandler.ApprovesTakeOverByAnything
で、ほとんどの引き継ぎシナリオを許可しますが、例えば2つのPinchHandlerが同じタッチポイントで争うことを避けます。
longPressThreshold : real |
この値が0
より大きい場合、長押しジェスチャーをトリガーしてlongPressed() シグナルを発するためにeventPoint が押されなければならない時間(秒)を指定します。 この制限時間前にポイントが離された場合、gesturePolicy 制約が満たされていれば、タップを検出できます。longPressThreshold
が0
の場合、タイマーは無効になり、信号は発せられない。longPressThreshold
がundefined
に設定されている場合、代わりにデフォルト値が使用され、このプロパティから読み出すことができます。
デフォルト値は、QStyleHints::mousePressAndHoldInterval ()を秒に変換した値である。
margin : real |
eventPoint がこのハンドラを起動できるparent 項目の境界を超えたマージン。例えば、target がparent
でもあるPinchHandler では、parent
が非常に小さなサイズに縮小されてもピンチ・ジェスチャーが可能なように、一般的なユーザーの指の幅の半分以上の距離に設定すると便利です。また、TapHandler ベースのボタンが画面の端の近くに配置されている場合、フィッツの法則に準拠するために使用することができます:ボタンが視覚的に端から数ピクセル離れていても、画面の端でマウスクリックに反応します。
デフォルト値は0です。
parent : Item |
ハンドラのスコープであるItem ;ハンドラが宣言されたItem。ハンドラは、このItemに代わってイベントを処理する。つまり、ポインタイベントは、そのeventPoints の少なくとも1つがItemの内部で発生する場合に関連する。最初はtarget() が同じであるが、再割り当てが可能である。
target およびQObject::parent()も参照のこと 。
point : handlerPoint |
eventPoint 現在扱われている点。現在処理されている点がない場合、このオブジェクトはデフォルト値(すべての座標が0)にリセットされます。
pressed : bool |
マウスまたはタッチポイントが押されたときは常に真を保持し、押されてからの動きは現在のgesturePolicy に準拠する。eventPoint が離されるか、ポリシーに違反すると、pressed はfalse に変更されます。
tapCount : int |
1つのジェスチャーとみなされる時間と空間の制約内で発生したタップの数。ボタンが変更された場合、カウンタは 1 にリセットされます。たとえば、トリプルタップを検出するには、次のように記述します:
Rectangle { width: 100; height: 30 signal tripleTap TapHandler { acceptedButtons: Qt.AllButtons onTapped: if (tapCount == 3) tripleTap() } }
target : Item |
このハンドラが操作するアイテム。
デフォルトでは、ハンドラが宣言されているアイテム(parent )と同じです。しかし、あるItem内のイベントを処理し、別のItemを操作するために、ターゲットを別のItemに設定したり、null
、デフォルトの動作を無効にし、代わりに別の動作を行うために、ターゲットを別のItemに設定すると便利な場合がある。
timeHeld : real |
ドラッグしきい値を超えて移動することなく、押されたポイントが保持されている時間(秒)。これはレンダリングされるフレームごとに少なくとも1回更新され、長押しでトリガーされるアクションの進行状況を示すアニメーションをレンダリングすることができます。また、長押しの長さに応じて、一連のアクションのいずれかをトリガーすることも可能です。
ゼロ未満の値は、このハンドラのItem 内にポイントが保持されていないことを意味する。
注: gesturePolicy がTapHandler.DragWithinBounds
に設定されている場合、timeHeld
は、押された点がドラッグしきい値を超えて移動してもカウントを停止せず、点がparent アイテムのbounds から離れたときのみカウントを停止する。
シグナル ドキュメント
canceled(eventPoint point) |
このハンドラがすでに与えられたpoint をつかんでいる場合、このシグナルは、別のポインタハンドラまたはアイテムによってつかみが奪われたときに発行されます。
注意: 対応するハンドラはonCanceled
です。
doubleTapped(eventPoint eventPoint, Qt::MouseButton button) |
このシグナルは、parent
アイテムが短い時間 (QStyleHints::mouseDoubleClickInterval()) と距離 (QStyleHints::mouseDoubleClickDistance() またはQStyleHints::touchDoubleTapDistance()) の間に 2 回タップされたときに発せられます。このシグナルは常にsingleTapped 、tapped 、tapCountChanged の後に発生する。eventPoint シグナル・パラメータには、タップされたポイントに関するリリース・イベントの情報が含まれ、button はクリックされたmouse button であり、タッチスクリーンではNoButton
である。
注: 対応するハンドラはonDoubleTapped
です。
grabChanged(PointerDevice::GrabTransition transition, eventPoint point) |
このシグナルは、このハンドラに関連する何らかの方法でグラブが変更されたときに発せられます。
transition (動詞)は何が起こったかを示します。point (オブジェクト)は、グラブされた、またはグラブされなかったポイントです。
transition の有効な値は以下の通りです:
定数 | 説明 |
---|---|
PointerDevice.GrabExclusive | このハンドラは、point を処理するための主要な責任を負った。 |
PointerDevice.UngrabExclusive | このハンドラは、以前の排他的グラブを放棄した。 |
PointerDevice.CancelGrabExclusive | このハンドラの排他的グラブは引き継がれたか、キャンセルされた。 |
PointerDevice.GrabPassive | このハンドラは、point を監視するために、パッシブグラブを獲得した。 |
PointerDevice.UngrabPassive | このハンドラーは以前のパッシブグラブを放棄した。 |
PointerDevice.CancelGrabPassive | このハンドラの前のパッシブグラブが異常終了した。 |
注: 対応するハンドラはonGrabChanged
。
longPressed() |
このシグナルは、longPressThreshold を超える時間、parent
アイテムが押されたまま保持されたときに発せられます。つまり、タッチポイントまたはボタンを押されたまま保持し ても、どの動きもドラッグしきい値を超えない場合、timeHeld がlongPressThreshold を超えた時点で、longPressed
シグナルが発せられます。
注: 対応するハンドラはonLongPressed
です。
singleTapped(eventPoint eventPoint, Qt::MouseButton button) |
このシグナルは、parent
アイテムが1回タップされたときに発せられます。QStyleHints::mouseDoubleClickInterval を超える時間が経過すると、再度タッ プすることができますが、次のタップまでの時間が短い場合、tapCount が増加します。eventPoint シグナル・パラメータには、タップされたポイントに関するリリース・イベントの情報が含まれ、button はクリックされたmouse button であり、タッチスクリーンではNoButton
である。
注: 対応するハンドラはonSingleTapped
です。
tapCountChanged() |
このシグナルは、parent
アイテムが(指定された時間と距離の範囲内で)1 回以上タップされたとき、および現在のtapCount
が前のtapCount
と異なるときに発行される。
注: 対応するハンドラはonTapCountChanged
です。
tapped(eventPoint eventPoint, Qt::MouseButton button) |
このシグナルは、parent
アイテムがタップされるたびに発せられます。
つまり、longPressThreshold 未満の時間内にタッチ ポイントまたはボタンを押してから離すと、どの動きもドラッグしきい値を超えないため、離した時点でtapped
シグナルが発信されます。eventPoint シグナル・パラメータには、タップされたポイントに関するリリース・イベントからの情報が含まれ、button はクリックされたmouse button であり、タッチスクリーンではNoButton
です。
import QtQuick Rectangle { width: 100 height: 100 TapHandler { acceptedButtons: Qt.LeftButton | Qt.RightButton onTapped: (eventPoint, button)=> console.log("tapped", eventPoint.device.name, "button", button, "@", eventPoint.scenePosition) } }
注: 対応するハンドラはonTapped
です。
本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。