QShaderDescription Class
シェーダーのインターフェイスを記述します。詳細...
Header: | #include <QShaderDescription> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
qmake: | QT += gui |
Since: | Qt 6.6 |
- 継承メンバを含む全メンバのリスト
- QShaderDescriptionは、Rendering in 3D に含まれます。
パブリック型
(since 6.6) struct | BlockVariable |
(since 6.6) struct | BuiltinVariable |
(since 6.6) struct | InOutVariable |
(since 6.6) struct | PushConstantBlock |
(since 6.6) struct | StorageBlock |
(since 6.6) struct | UniformBlock |
enum | BuiltinType { PositionBuiltin, PointSizeBuiltin, ClipDistanceBuiltin, CullDistanceBuiltin, VertexIdBuiltin, …, InstanceIndexBuiltin } |
enum | ImageFlag { ReadOnlyImage, WriteOnlyImage } |
flags | ImageFlags |
enum | ImageFormat { ImageFormatUnknown, ImageFormatRgba32f, ImageFormatRgba16f, ImageFormatR32f, ImageFormatRgba8, …, ImageFormatR8ui } |
enum | QualifierFlag { QualifierReadOnly, QualifierWriteOnly, QualifierCoherent, QualifierVolatile, QualifierRestrict } |
flags | QualifierFlags |
enum | TessellationMode { UnknownTessellationMode, TrianglesTessellationMode, QuadTessellationMode, IsolineTessellationMode } |
enum | TessellationPartitioning { UnknownTessellationPartitioning, EqualTessellationPartitioning, FractionalEvenTessellationPartitioning, FractionalOddTessellationPartitioning } |
enum | TessellationWindingOrder { UnknownTessellationWindingOrder, CwTessellationWindingOrder, CcwTessellationWindingOrder } |
enum | VariableType { Unknown, Float, Vec2, Vec3, Vec4, …, Half4 } |
パブリック関数
QShaderDescription() | |
QShaderDescription(const QShaderDescription &other) | |
~QShaderDescription() | |
QList<QShaderDescription::InOutVariable> | combinedImageSamplers() const |
std::array<uint, 3> | computeShaderLocalSize() const |
QList<QShaderDescription::BuiltinVariable> | inputBuiltinVariables() const |
QList<QShaderDescription::InOutVariable> | inputVariables() const |
bool | isValid() const |
QList<QShaderDescription::BuiltinVariable> | outputBuiltinVariables() const |
QList<QShaderDescription::InOutVariable> | outputVariables() const |
QList<QShaderDescription::PushConstantBlock> | pushConstantBlocks() const |
void | serialize(QDataStream *stream, int version) const |
QList<QShaderDescription::StorageBlock> | storageBlocks() const |
QList<QShaderDescription::InOutVariable> | storageImages() const |
QShaderDescription::TessellationMode | tessellationMode() const |
uint | tessellationOutputVertexCount() const |
QShaderDescription::TessellationPartitioning | tessellationPartitioning() const |
QShaderDescription::TessellationWindingOrder | tessellationWindingOrder() const |
QByteArray | toJson() const |
QList<QShaderDescription::UniformBlock> | uniformBlocks() const |
QShaderDescription & | operator=(const QShaderDescription &other) |
静的パブリック・メンバー
QShaderDescription | deserialize(QDataStream *stream, int version) |
関連する非メンバー
bool | operator==(const QShaderDescription &lhs, const QShaderDescription &rhs) |
詳細説明
警告 QShader や QShaderDescription を含む Qt Gui モジュールのQRhi クラスファミリーは、限定的な互換性保証を提供しています。これらのクラスにはソース互換性もバイナリ互換性も保証されていません。つまり、APIはアプリケーションが開発されたQtバージョンでのみ動作することが保証されています。しかし、ソース互換性のない変更は最小限にとどめることを目的としており、マイナーリリース(6.7、6.8など)のみで行われます。これらのクラスをアプリケーションで使用するには、Qt::GuiPrivate
(CMake を使用している場合)にリンクし、rhi
のプレフィックスを付けてヘッダをインクルードします(例:#include <rhi/qshaderdescription.h>
)。
シェーダには通常、入力と出力のセットがあります。たとえば、バーテックスシェーダは多数の入力変数を持ち、アプリケーション が提供するデータ(モデルビュー行列など)にアクセスするために、1 つまたは複 数のユニフォームバッファを使用することがあります。フラグメントステージのシェーダは、(単純なセットアップでは)バー テックスステージからデータを受け取り、ユニフォームバッファ、イ メージ、サンプラからのデータにも依存するかもしれません。
頂点入力とユニフォームバッファのレイアウト(メンバの名前は何か、サイズ、オフセットなど)に関しては、アプリケーションとフレームワークは、実行時に動的にこれを発見する必要があるかもしれません。これは、シェーダーがビルトインではなく、ユーザーのような外部エンティティによって提供される場合に典型的です。
近代的で無駄のないグラフィックス API は、もはや実行時にシェーダ反射情報を照会する方法を提供しないかもしれません。そのため、このようなデータはQShaderBaker によって自動的に生成され、QShader ごとに QShaderDescription オブジェクトとして提供されます。
例
次の頂点シェーダを見てみましょう:
#version 440 layout(location = 0) in vec4 position; layout(location = 1) in vec3 color; layout(location = 0) out vec3 v_color; layout(std140, binding = 0) uniform buf { mat4 mvp; float opacity; } ubuf; void main() { v_color = color; gl_Position = ubuf.mvp * position; }
このシェーダには 2 つの入力があります:vec4
タイプを持つ 0 の位置のposition
と、vec3
タイプを持つ 1 の位置のcolor
です:v_color
出力は1つです。さらに重要なのは、バインディング0に68バイトのサイズを持つ一様ブロックがあり、オフセット0にmvp
という名前の4x4行列、オフセット64にopacity
という浮動小数点数の2つのメンバがあります。
これらはすべてQShaderDescriptionオブジェクトによって記述されます。QShaderDescription は、QDataStream を介して JSON やバイナリ形式にシリアライズすることができ、このバイナリ形式からデシリアライズすることもできます。実際には、QShader が関連する QShaderDescription を自動的に処理するため、これが必要になることはほとんどありませんが、上記のシェーダの QShaderDescription を(qsb
ツールの-d
オプションで実行されるように)JSON として書き出すと、次のようになります:
{ "inputs": [ { "location": 1, "name": "color", "type": "vec3" }, { "location": 0, "name": "position", "type": "vec4" } ], "outputs": [ { "location": 0, "name": "v_color", "type": "vec3" } ], "uniformBlocks": [ { "binding": 0, "blockName": "buf", "members": [ { "matrixStride": 16, "name": "mvp", "offset": 0, "size": 64, "type": "mat4" }, { "name": "opacity", "offset": 64, "size": 4, "type": "float" } ], "set": 0, "size": 68, "structName": "ubuf" } ] }
C++ API では、上記のようなデータ構造にアクセスできます。C++のAPIでは、上記のようなデータ構造にアクセスすることができます。簡単にするために、内部構造体にはパブリックデータ・メンバしか含まれていません。
QShaderBaker およびQShaderも参照して ください。
メンバ型のドキュメント
enum QShaderDescription::BuiltinType
組み込み変数の型。
定数 | 値 |
---|---|
QShaderDescription::PositionBuiltin | 0 |
QShaderDescription::PointSizeBuiltin | 1 |
QShaderDescription::ClipDistanceBuiltin | 3 |
QShaderDescription::CullDistanceBuiltin | 4 |
QShaderDescription::VertexIdBuiltin | 5 |
QShaderDescription::InstanceIdBuiltin | 6 |
QShaderDescription::PrimitiveIdBuiltin | 7 |
QShaderDescription::InvocationIdBuiltin | 8 |
QShaderDescription::LayerBuiltin | 9 |
QShaderDescription::ViewportIndexBuiltin | 10 |
QShaderDescription::TessLevelOuterBuiltin | 11 |
QShaderDescription::TessLevelInnerBuiltin | 12 |
QShaderDescription::TessCoordBuiltin | 13 |
QShaderDescription::PatchVerticesBuiltin | 14 |
QShaderDescription::FragCoordBuiltin | 15 |
QShaderDescription::PointCoordBuiltin | 16 |
QShaderDescription::FrontFacingBuiltin | 17 |
QShaderDescription::SampleIdBuiltin | 18 |
QShaderDescription::SamplePositionBuiltin | 19 |
QShaderDescription::SampleMaskBuiltin | 20 |
QShaderDescription::FragDepthBuiltin | 22 |
QShaderDescription::NumWorkGroupsBuiltin | 24 |
QShaderDescription::WorkgroupSizeBuiltin | 25 |
QShaderDescription::WorkgroupIdBuiltin | 26 |
QShaderDescription::LocalInvocationIdBuiltin | 27 |
QShaderDescription::GlobalInvocationIdBuiltin | 28 |
QShaderDescription::LocalInvocationIndexBuiltin | 29 |
QShaderDescription::VertexIndexBuiltin | 42 |
QShaderDescription::InstanceIndexBuiltin | 43 |
enum QShaderDescription::ImageFlag
flags QShaderDescription::ImageFlags.
イメージフラグ。
定数 | 値 |
---|---|
QShaderDescription::ReadOnlyImage | 1 << 0 |
QShaderDescription::WriteOnlyImage | 1 << 1 |
ImageFlags 型はQFlags<ImageFlag> の typedef です。これは、ImageFlag 値の OR の組み合わせを格納します。
enum QShaderDescription::ImageFormat
画像フォーマット。
定数 | 値 |
---|---|
QShaderDescription::ImageFormatUnknown | 0 |
QShaderDescription::ImageFormatRgba32f | 1 |
QShaderDescription::ImageFormatRgba16f | 2 |
QShaderDescription::ImageFormatR32f | 3 |
QShaderDescription::ImageFormatRgba8 | 4 |
QShaderDescription::ImageFormatRgba8Snorm | 5 |
QShaderDescription::ImageFormatRg32f | 6 |
QShaderDescription::ImageFormatRg16f | 7 |
QShaderDescription::ImageFormatR11fG11fB10f | 8 |
QShaderDescription::ImageFormatR16f | 9 |
QShaderDescription::ImageFormatRgba16 | 10 |
QShaderDescription::ImageFormatRgb10A2 | 11 |
QShaderDescription::ImageFormatRg16 | 12 |
QShaderDescription::ImageFormatRg8 | 13 |
QShaderDescription::ImageFormatR16 | 14 |
QShaderDescription::ImageFormatR8 | 15 |
QShaderDescription::ImageFormatRgba16Snorm | 16 |
QShaderDescription::ImageFormatRg16Snorm | 17 |
QShaderDescription::ImageFormatRg8Snorm | 18 |
QShaderDescription::ImageFormatR16Snorm | 19 |
QShaderDescription::ImageFormatR8Snorm | 20 |
QShaderDescription::ImageFormatRgba32i | 21 |
QShaderDescription::ImageFormatRgba16i | 22 |
QShaderDescription::ImageFormatRgba8i | 23 |
QShaderDescription::ImageFormatR32i | 24 |
QShaderDescription::ImageFormatRg32i | 25 |
QShaderDescription::ImageFormatRg16i | 26 |
QShaderDescription::ImageFormatRg8i | 27 |
QShaderDescription::ImageFormatR16i | 28 |
QShaderDescription::ImageFormatR8i | 29 |
QShaderDescription::ImageFormatRgba32ui | 30 |
QShaderDescription::ImageFormatRgba16ui | 31 |
QShaderDescription::ImageFormatRgba8ui | 32 |
QShaderDescription::ImageFormatR32ui | 33 |
QShaderDescription::ImageFormatRgb10a2ui | 34 |
QShaderDescription::ImageFormatRg32ui | 35 |
QShaderDescription::ImageFormatRg16ui | 36 |
QShaderDescription::ImageFormatRg8ui | 37 |
QShaderDescription::ImageFormatR16ui | 38 |
QShaderDescription::ImageFormatR8ui | 39 |
enum QShaderDescription::QualifierFlag
flags QShaderDescription::QualifierFlags
Qualifier フラグ。
定数 | 値 |
---|---|
QShaderDescription::QualifierReadOnly | 1 << 0 |
QShaderDescription::QualifierWriteOnly | 1 << 1 |
QShaderDescription::QualifierCoherent | 1 << 2 |
QShaderDescription::QualifierVolatile | 1 << 3 |
QShaderDescription::QualifierRestrict | 1 << 4 |
QualifierFlags 型はQFlags<QualifierFlag> の typedef です。QualifierFlags 値の OR の組み合わせを格納します。
enum QShaderDescription::TessellationMode
定数 | 定数 |
---|---|
QShaderDescription::UnknownTessellationMode | 0 |
QShaderDescription::TrianglesTessellationMode | 1 |
QShaderDescription::QuadTessellationMode | 2 |
QShaderDescription::IsolineTessellationMode | 3 |
enum QShaderDescription::TessellationPartitioning
定数 | 定数値 |
---|---|
QShaderDescription::UnknownTessellationPartitioning | 0 |
QShaderDescription::EqualTessellationPartitioning | 1 |
QShaderDescription::FractionalEvenTessellationPartitioning | 2 |
QShaderDescription::FractionalOddTessellationPartitioning | 3 |
enum QShaderDescription::TessellationWindingOrder
一定値 | 定数値 |
---|---|
QShaderDescription::UnknownTessellationWindingOrder | 0 |
QShaderDescription::CwTessellationWindingOrder | 1 |
QShaderDescription::CcwTessellationWindingOrder | 2 |
enum QShaderDescription::VariableType
変数またはブロックメンバの型を表します。
定数 | 値 | 説明 |
---|---|---|
QShaderDescription::Unknown | 0 | |
QShaderDescription::Float | 1 | |
QShaderDescription::Vec2 | 2 | |
QShaderDescription::Vec3 | 3 | |
QShaderDescription::Vec4 | 4 | |
QShaderDescription::Mat2 | 5 | |
QShaderDescription::Mat2x3 | 6 | |
QShaderDescription::Mat2x4 | 7 | |
QShaderDescription::Mat3 | 8 | |
QShaderDescription::Mat3x2 | 9 | |
QShaderDescription::Mat3x4 | 10 | |
QShaderDescription::Mat4 | 11 | |
QShaderDescription::Mat4x2 | 12 | |
QShaderDescription::Mat4x3 | 13 | |
QShaderDescription::Int | 14 | |
QShaderDescription::Int2 | 15 | |
QShaderDescription::Int3 | 16 | |
QShaderDescription::Int4 | 17 | |
QShaderDescription::Uint | 18 | |
QShaderDescription::Uint2 | 19 | |
QShaderDescription::Uint3 | 20 | |
QShaderDescription::Uint4 | 21 | |
QShaderDescription::Bool | 22 | |
QShaderDescription::Bool2 | 23 | |
QShaderDescription::Bool3 | 24 | |
QShaderDescription::Bool4 | 25 | |
QShaderDescription::Double | 26 | |
QShaderDescription::Double2 | 27 | |
QShaderDescription::Double3 | 28 | |
QShaderDescription::Double4 | 29 | |
QShaderDescription::DMat2 | 30 | |
QShaderDescription::DMat2x3 | 31 | |
QShaderDescription::DMat2x4 | 32 | |
QShaderDescription::DMat3 | 33 | |
QShaderDescription::DMat3x2 | 34 | |
QShaderDescription::DMat3x4 | 35 | |
QShaderDescription::DMat4 | 36 | |
QShaderDescription::DMat4x2 | 37 | |
QShaderDescription::DMat4x3 | 38 | |
QShaderDescription::Sampler1D | 39 | |
QShaderDescription::Sampler2D | 40 | |
QShaderDescription::Sampler2DMS | 41 | |
QShaderDescription::Sampler3D | 42 | |
QShaderDescription::SamplerCube | 43 | |
QShaderDescription::Sampler1DArray | 44 | |
QShaderDescription::Sampler2DArray | 45 | |
QShaderDescription::Sampler2DMSArray | 46 | |
QShaderDescription::Sampler3DArray | 47 | |
QShaderDescription::SamplerCubeArray | 48 | |
QShaderDescription::SamplerRect | 49 | |
QShaderDescription::SamplerBuffer | 50 | |
QShaderDescription::SamplerExternalOES | 51 | |
QShaderDescription::Sampler | 52 | 個別のサンプラー用 |
QShaderDescription::Image1D | 53 | |
QShaderDescription::Image2D | 54 | |
QShaderDescription::Image2DMS | 55 | |
QShaderDescription::Image3D | 56 | |
QShaderDescription::ImageCube | 57 | |
QShaderDescription::Image1DArray | 58 | |
QShaderDescription::Image2DArray | 59 | |
QShaderDescription::Image2DMSArray | 60 | |
QShaderDescription::Image3DArray | 61 | |
QShaderDescription::ImageCubeArray | 62 | |
QShaderDescription::ImageRect | 63 | |
QShaderDescription::ImageBuffer | 64 | |
QShaderDescription::Struct | 65 | |
QShaderDescription::Half | 66 | |
QShaderDescription::Half2 | 67 | |
QShaderDescription::Half3 | 68 | |
QShaderDescription::Half4 | 69 |
メンバ関数説明
QShaderDescription::QShaderDescription()
新しい空の QShaderDescription を構築します。
注意: 空であることは、新しく構築されたインスタンスに対してisValid() がfalse
を返すことを意味します。
QShaderDescription::QShaderDescription(const QShaderDescription &other)
other のコピーを構築します。
[noexcept]
QShaderDescription::~QShaderDescription()
デストラクタ。
QList<QShaderDescription::InOutVariable> QShaderDescription::combinedImageSamplers() const
結合されたイメージサンプラーのリストを返します。
GLSL/Vulkanシェーダーをソースとして、layout(binding = 1) uniform sampler2D tex;
ユニフォームは以下を生成します:(ここではテキストJSONとして示されています)
"combinedImageSamplers": [ { "binding": 1, "name": "tex", "set": 0, "type": "sampler2D" } ]
これは、シェーダーの他の言語バージョンも結合イメージサンプラーを使用しなければならないという意味ではありません。たとえば、HLSLバージョンでは、Texture2DとSamplerStateオブジェクトをそれぞれレジスタt1とs1で使用するだけでしょう。
std::array<uint, 3> QShaderDescription::computeShaderLocalSize() const
コンピュートシェーダのローカルサイズを返します。
たとえば、次の宣言を持つコンピュートシェーダの場合、この関数は { 256, 16, 1} を返します。
layout(local_size_x = 256, local_size_y = 16, local_size_z = 1) in;
[static]
QShaderDescription QShaderDescription::deserialize(QDataStream *stream, int version)
stream からロードされた新しいQShaderDescription を返します。version は qsb バージョンを指定します。
serialize()も参照してください 。
QList<QShaderDescription::BuiltinVariable> QShaderDescription::inputBuiltinVariables() const
入力として使用されるアクティブなビルトインのリストを返します。例えば、gl_TessCoord と gl_Position の値を読み取るテッセレーション評価シェーダは、TessCoordBuiltin とPositionBuiltin がここにリストされます。
QList<QShaderDescription::InOutVariable> QShaderDescription::inputVariables() const
入力変数のリストを返します。これには、頂点ステージ用の頂点入力(アトリビュートと呼ばれることもある)と、他のステージ用の入力(バリエーションと呼ばれることもある)が含まれます。
bool QShaderDescription::isValid() const
QShaderDescription が、変数リストとブロック リストのいずれかに少なくとも 1 つのエントリを含む場合、true を返します。
QList<QShaderDescription::BuiltinVariable> QShaderDescription::outputBuiltinVariables() const
入力として使用されるアクティブな組み込み変数のリストを返します。たとえば、バーテックスシェーダは出力組み込みとしてPositionBuiltin を持つことが非常によくあります。
QList<QShaderDescription::InOutVariable> QShaderDescription::outputVariables() const
出力変数のリストを返します。
QList<QShaderDescription::PushConstantBlock> QShaderDescription::pushConstantBlocks() const
プッシュ定数ブロックのリストを返します。
注意: Qt Rendering Hardware Interface と組み合わせて使用するシェーダでは、プッシュ定数ブロックに依存しないようにしてください。
void QShaderDescription::serialize(QDataStream *stream, int version) const
このQShaderDescription をstream にシリアライズします。version は qsb バージョンを指定します。
deserialize() およびtoJson()も参照してください 。
QList<QShaderDescription::StorageBlock> QShaderDescription::storageBlocks() const
シェーダ記憶ブロックのリストを返す。
たとえば、ソースとして GLSL/Vulkan シェーダーを使用する場合、次のように宣言します。
struct Stuff { vec2 a; vec2 b; }; layout(std140, binding = 0) buffer StuffSsbo { vec4 whatever; Stuff stuff[]; } buf;
は以下を生成します:(ここではテキストJSONとして示されています)
"storageBlocks": [ { "binding": 0, "blockName": "StuffSsbo", "instanceName": "buf", "knownSize": 16, "runtimeArrayStride": 16 "members": [ { "name": "whatever", "offset": 0, "size": 16, "type": "vec4" }, { "arrayDims": [ 0 ], "name": "stuff", "offset": 16, "size": 0, "structMembers": [ { "name": "a", "offset": 0, "size": 8, "type": "vec2" }, { "name": "b", "offset": 8, "size": 8, "type": "vec2" } ], "type": "struct" } ], "set": 0 } ]
注: ストレージブロックの最後のメンバーのサイズは未定義です。これは、size
0と表示され、配列の次元は[0]
。ストレージブロックのknownSize
は、最後のメンバのサイズを除外しています。配列サイズが未定義の最後のメンバに対する、配列項目間のバイト単位のストライドはruntimeArrayStride
である。この値は、指定されたバッファメモリレイアウト標準(std140、std430)の規則に従って決定される。
注意: SSBOは、OpenGL 2.xや3.1より古いOpenGL ESなど、一部のグラフィックスAPIでは利用できません。
QList<QShaderDescription::InOutVariable> QShaderDescription::storageImages() const
画像変数のリストを返します。
これらはおそらくコンピュート・シェーダーで発生します。たとえば、layout (binding = 0, rgba8) uniform readonly image2D inputImage;
:(ここではテキストJSONとして示されています)
"storageImages": [ { "binding": 0, "imageFormat": "rgba8", "name": "inputImage", "set": 0, "type": "image2D" } ]
注意: 個別のイメージ・オブジェクトは、OpenGL 2.xや3.1より古いOpenGL ESなど、一部のグラフィックスAPIとは互換性がありません。
QShaderDescription::TessellationMode QShaderDescription::tessellationMode() const
テセレーションコントロールまたは評価シェーダーのテセレーション実行モードを返します。
設定されていない場合、返される値はUnknownTessellationMode です。
例えば、以下の宣言を持つテッセレーション評価シェーダーの場合、この関数はTrianglesTessellationMode を返します。
layout(triangles) in;
uint QShaderDescription::tessellationOutputVertexCount() const
出力頂点の数を返します。
例えば、以下の宣言を持つテッセレーション制御シェーダの場合、この関数は 3 を返します。
layout(vertices = 3) out;
QShaderDescription::TessellationPartitioning QShaderDescription::tessellationPartitioning() const
テッセレーション制御シェーダまたは評価シェーダのテッセレーション分割モードを返します。
設定されていない場合、返される値はUnknownTessellationPartitioning です。
例えば、以下の宣言を持つテッセレーション評価シェーダの場合、関数はFractionalOddTessellationPartitioning を返します。
layout(triangles, fractional_odd_spacing, ccw) in;
QShaderDescription::TessellationWindingOrder QShaderDescription::tessellationWindingOrder() const
テッセレーションコントロールまたは評価シェーダのテッセレーション巻き順を返します。
設定されていない場合、返される値はUnknownTessellationWindingOrder です。
例えば、以下の宣言を持つテッセレーション評価シェーダーの場合、この関数はCcwTessellationWindingOrder を返します。
layout(triangles, fractional_odd_spacing, ccw) in;
QByteArray QShaderDescription::toJson() const
データのシリアライズされたJSONテキストバージョンを返します。
注意: JSON テキストにはデシリアライズ・メソッドがありません。
serialize()も参照してください 。
QList<QShaderDescription::UniformBlock> QShaderDescription::uniformBlocks() const
ユニフォーム・ブロックのリストを返します。
QShaderDescription &QShaderDescription::operator=(const QShaderDescription &other)
このオブジェクトにother を割り当てます。
関連する非メンバー
[noexcept]
bool operator==(const QShaderDescription &lhs, const QShaderDescription &rhs)
2 つのQShaderDescription オブジェクトlhs とrhs が等しい場合、true
を返します。
©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。