このページでは

Surface3DNode QML Type

3D曲面グラフノードの使用方法を説明します。詳細...

Import Statement: import QtGraphs
Inherits:

GraphsNode

プロパティ

信号

方法

詳細説明

この型を使うと、Qt Quick を使ってサーフェスグラフ・ノードを3Dでレンダリングすることができる。

この型を使用するには、Qt Graphs モジュールをインポートする必要があります:

import QtGraphs

その後、qmlファイルでSurface3DNodeを使用することができます:

import QtQuick
import QtGraphs

View3D {
    width: 640
    height: 480

    Surface3DNode {
        width: parent.width
        height: parent.height
        Surface3DSeries {
            itemLabelFormat: "Pop density at (@xLabel N, @zLabel E): @yLabel"
            ItemModelSurfaceDataProxy {
                itemModel: dataModel
                // Mapping model roles to surface series rows, columns, and values.
                rowRole: "longitude"
                columnRole: "latitude"
                yPosRole: "pop_density"
            }
        }

        onTapped: {
            // Disable the default input handler
            unsetDefaultTapHandler()
            // Implement own custom event handler
            console.log("Custom tap event handler")
        }
    }
    ListModel {
        id: dataModel
        ListElement{ longitude: "20"; latitude: "10"; pop_density: "4.75"; }
        ListElement{ longitude: "21"; latitude: "10"; pop_density: "3.00"; }
        ListElement{ longitude: "22"; latitude: "10"; pop_density: "1.24"; }
        ListElement{ longitude: "23"; latitude: "10"; pop_density: "2.53"; }
        ListElement{ longitude: "20"; latitude: "11"; pop_density: "2.55"; }
        ListElement{ longitude: "21"; latitude: "11"; pop_density: "2.03"; }
        ListElement{ longitude: "22"; latitude: "11"; pop_density: "3.46"; }
        ListElement{ longitude: "23"; latitude: "11"; pop_density: "5.12"; }
        ListElement{ longitude: "20"; latitude: "12"; pop_density: "1.37"; }
        ListElement{ longitude: "21"; latitude: "12"; pop_density: "2.98"; }
        ListElement{ longitude: "22"; latitude: "12"; pop_density: "3.33"; }
        ListElement{ longitude: "23"; latitude: "12"; pop_density: "3.23"; }
        ListElement{ longitude: "20"; latitude: "13"; pop_density: "4.34"; }
        ListElement{ longitude: "21"; latitude: "13"; pop_density: "3.54"; }
        ListElement{ longitude: "22"; latitude: "13"; pop_density: "1.65"; }
        ListElement{ longitude: "23"; latitude: "13"; pop_density: "2.67"; }
    }
}

Surface3DSeries,ItemModelSurfaceDataProxy,Bars3DNode,Scatter3DNode,Qt Graphs C++ Classes for 3Dも参照してください

プロパティ・ドキュメント

aspectRatio : real

水平面上の最長軸と y 軸の間のグラフのスケー リ ングの比率。デフォルトは2.0

注意: Bars3D には影響しません。

horizontalAspectRatioも参照してください

axisX : Value3DAxis

アクティブなX軸。

軸が与えられない場合、ラベルと自動調整範囲を持たない一時的なデフォルト軸が作成される。この一時的な軸は、他の軸が明示的に同じ方向に設定されると破棄される。

axisY : Value3DAxis

アクティブなY軸。

軸が与えられない場合、ラベルと自動調整範囲を持たない一時的なデフォルト軸が作成される。この一時的な軸は、他の軸が明示的に同じ方向に設定されると破棄されます。

axisZ : Value3DAxis

アクティブなZ軸。

軸が与えられない場合、ラベルと自動調整範囲を持たない一時的なデフォルト軸が作成される。この一時的な軸は、他の軸が明示的に同じ方向に設定されると破棄される。

customItemList : list<Custom3DItem>

グラフに追加されたCustom3DItem アイテムのリスト。グラフは追加された項目の所有権を持つ。

flipHorizontalGrid : bool

使用例によっては、水平軸グリッドがほとんど表面に覆われているため、水平軸グリッドをグラフの下部ではなく上部に表示した方が便利な場合がある。典型的な使用例としては、トップダウン視点のオルソグラフィック投影を使った2Dスペクトログラムの表示がある。

false の場合、横軸グリッドとラベルはグラフの水平背景に描画される。true の場合、横軸グリッドとラベルは、グラフの水平背景とは反対側に描画される。デフォルトはfalse

gridLineType : Graphs3D.GridLineType

グ リ ッ ド 線の タ イ プがGraphs3D.GridLineType.ShaderGraphs3D.GridLineType.Geometry かを定義 し ます。

こ の値はすべてのグ リ ッ ド 線に影響を与え ます。

Graphs3D.GridLineTypeも参照。

horizontalAspectRatio : real

X軸とZ軸の間のグラフのスケーリングの比率。値0.0 は、軸範囲に従った自動スケーリングを示す。デフォルトは0.0

注: barThickness およびbarSpacing プロパティによって水平面のスケーリングを扱うBars3DNode には影響しません。極座標グラフもこのプロパティを無視します。

aspectRatio,polar,Bars3DNode::barThickness, およびBars3DNode::barSpacingも参照してください

labelMargin : real

このプロパティは、軸ラベルの配置のマージンを指定する。

負の値はラベルをプロット領域内に配置し、正の値はラベルをプロット領域外に配置する。値が負の場合、ラベルの自動回転は無効になる。デフォルトは0.1

QAbstract3DAxis::labelAutoAngleも参照

locale : locale

さまざまな数値ラベルの書式設定に使用するロケールを設定する。デフォルトは"C" ロケールである。

Value3DAxis::labelFormatも参照のこと

margin : real

プロット可能なグラフ領域の端とグラフの背景の端の間に残されたスペースに使用される絶対値。

marginの値が負の場合、marginは自動的に決定され、系列のアイテムのサイズやグラフのタイプによって変化する。グラフのアスペクト比がデフォルト値から変更されていない場合、値はY軸範囲の分数として解釈される。デフォルトは-1.0

注: 散布図グラフの余白を自動的に決定される余白よりも小さく設定すると、グラフの端の散布図項目がグラフの背景と重なることがあります。

注: 散布図と曲面グラフでは、軸ラベルのサイズに比べて余白が小さい場合、軸のエッジラベルの位置は隣の軸のエッジラベルと重ならないように調整されます。

optimizationHint : Graphs3D.OptimizationHint

レンダリングの最適化にデフォルトモードとレガシーモードのどちらを使用するかを指定します。

デフォルト・モードはインスタンス化されたレンダリングを使用し、ほとんどのシステムで最高レベルのパフォーマンスで全機能を提供します。静的モードはグラフ描画を最適化し、変化のない大規模なデータセットに最適です。動的なデータの変化やアイテムの回転があると遅くなります。選択は最適化されないため、大規模なデータセットで静的モードを使用することはお勧めできません。レガシーモードは、インスタンス化せずに、グラフ内のすべての項目を個別にレンダリングします。これは、デフォルト・モードが機能しない場合にのみ使用されるべきで、ターゲット・システムがインスタンス化をサポートしていない場合と同じです。デフォルトはDefault

注意: 環境によっては、静的最適化を使用した大きなグラフが描画されないことがあります。これは、すべてのアイテムが1回の描画呼び出しで描画されるためで、グラフィックドライバによって、呼び出しごとにサポートされる最大頂点数が異なるからです。これは主に32ビットおよびOpenGL ES2プラットフォームでの問題です。この問題を回避するには、頂点数の少ないアイテムメッシュを選択するか、ポイントメッシュを使用します。

Abstract3DSeries::mesh およびGraphs3D.OptimizationHintも参照して ください。

polar : bool

true の場合、横軸は極軸に変わる。x軸は角度軸になり、z軸は半径軸になる。棒グラフでは極軸モードは利用できない。

デフォルトはfalse

radialLabelOffsetも参照

queriedGraphPosition : vector3d [read-only]

この読み取り専用プロパティには、Scene3D::graphPositionQuery を使用してクエリされた各軸に沿った最新のグラフ位置値が含まれる。値は[-1, 1] の範囲に正規化される。クエリされた位置がグラフ境界の外側であった場合、値は実際の位置を反映せず、代わりに範囲[-1, 1] の外側の未定義の位置となります。この値は、問い合わせが行われるまで未定義となる。

特定の画面位置に一致する唯一の正しい3D座標は存在しないため、一貫性を保つために、クエリは常にグラフを囲む不可視のボックスの内側に対して行われます。

注: 棒グラフでは、グラフのフロアレベルでしかグラフの位置を問い合わせることができないため、棒グラフではy値は常に0であり、有効な問い合わせはグラフのフロアを含む画面位置でのみ行うことができます。

Scene3D::graphPositionQueryも参照のこと

radialLabelOffset : real

このプロパティは、半径極軸の軸ラベルの正規化された水平オフセットを指定する。値0.0 は、ラベルが0角度の角度軸グリッド線の隣に描画されることを示す。値1.0 は、ラベルがグラフ背景の端の通常の場所に描画されることを示す。このプロパティは、polar プロパティ値がfalse の場合は無視されます。デフォルトは1.0

polarも参照してください

selectedElement : Graphs3D.ElementType [read-only]

グラフ内で選択されている要素。

このプロパティを使用して、選択された要素のタイプを問い合わせることができます。このタイプは、グラフ内で新しい選択が行われ、selectedElementChanged シグナルが発信されるまで有効です。

このシグナルは、例えば、カスタマイズされた入力処理を実装するために使用することができます。

selectedLabelIndex(),selectedAxis(),selectedCustomItemIndex(),selectedCustomItem(),Bars3DNode::selectedSeries,Scatter3DNode::selectedSeries,Scene3D::selectionQueryPosition,Graphs3D.ElementTypeも参照のこと

selectedSeries : Surface3DSeries [read-only]

選択された系列または null。selectionModeMultiSeries フラグが設定されている場合、このプロパティは選択されたポイントを所有する系列を保持します。

selectionMode : Graphs3D.SelectionMode

グラフのアクティブな選択モード。graphs3d.selectionflag 列挙値のいずれか。

seriesList : list<Surface3DSeries> [default]

このプロパティはグラフの系列を保持する。デフォルトでは、このプロパティには空のリストが含まれます。系列を設定するには、addSeries() 関数を使用するか、グラフの子として定義します。

theme : GraphsTheme

グラフのアクティブテーマ。

GraphsThemeも参照

シグナルのドキュメント

axisXChanged(ValueAxis3D axis)

このシグナルは、axisXaxis に変更されたときに発せられる。

注: 対応するハンドラはonAxisXChanged

axisYChanged(ValueAxis3D axis)

このシグナルは、axisYaxis に変更されたときに発せられる。

注: 対応するハンドラはonAxisYChanged

axisZChanged(ValueAxis3D axis)

このシグナルは、axisZaxis に変更されたときに発せられる。

注: 対応するハンドラはonAxisZChanged

flipHorizontalGridChanged(bool flip)

このシグナルは、flipHorizontalGridflip に変更されたときに発せられる。

注: 対応するハンドラはonFlipHorizontalGridChanged

selectedSeriesChanged(Surface3DSeries series)

このシグナルは、selectedSeriesseries に変更されたときに発せられる。

注: 対応するハンドラはonSelectedSeriesChanged です。

メソッド・ドキュメント

qsizetype addCustomItem(Custom3DItem item)

Custom3DItem item をグラフに追加する。グラフは追加された項目の所有権を持つ。

add が成功した場合は追加されたアイテムのインデックスを返し、null アイテムを追加しようとした場合は -1、既に追加されたアイテムを追加しようとした場合はそのアイテムのインデックスを返します。

removeCustomItems()、removeCustomItem()、removeCustomItemAt()も参照のこと

void addSeries(Surface3DSeries series)

グラフにseries を追加する。

GraphsNode::hasSeries()も参照

void clearSelection()

すべての付属シリーズからの選択をクリアする。

void doPicking(QPoint point)

グラフの要素にpoint からビュー座標を使用してピッキングを実行し、最初にヒットしたアイテムを選択します。デフォルトの入力処理は、onTapped イベントを受信したときにこれを実行します。

selectedElementも参照してください

void doRayPicking(QVector3D origin, QVector3D direction)

グラフの要素に対して、origindirection から始まるピッキングを実行し、最初にヒットした項目を選択する。

selectedElementも参照

bool hasSeries(Abstract3DSeries series)

series がすでにグラフに追加されているかどうかを返す。

void releaseCustomItem(Custom3DItem item)

item の所有権を取り戻し、グラフからitem を削除する。

注意: 同じアイテムをグラフに追加する場合は、テクスチャファイルを再設定する必要があります。

Custom3DItem::textureFileも参照してください

void removeCustomItem(Custom3DItem item)

カスタムitem を削除します。割り当てられたリソースを削除します。

void removeCustomItemAt(vector3d position)

position にあるすべてのカスタムアイテムを削除する。それらに割り当てられているリソースを削除します。

void removeCustomItems()

すべてのカスタム項目を削除します。それらに割り当てられているリソースを削除します。

void removeSeries(Surface3DSeries series)

グラフからseries を削除する。

GraphsNode::hasSeries()も参照

Abstract3DAxis selectedAxis()

任意のラベルタイプでselectedElementChanged 信号を受信した後に、選択された軸を取得するために使用できる。選択は、次のselectedElementChanged 信号まで有効である。

選択された軸、 またはNULL を返す。

selectedElementも参照してください

Custom3DItem selectedCustomItem()

ElementType.CustomItem タイプでselectedElementChanged シグナルを受信した後、選択されたカスタム項目を取得するために使用できます。アイテムの所有権はグラフに残ります。選択は、次のselectedElementChanged シグナルまで有効です。

選択されたカスタム項目、または null を返します。

selectedElementも参照してください

qsizetype selectedCustomItemIndex()

ElementType.CustomItem タイプでselectedElementChanged シグナルを受信した後、選択されたカスタム項目のインデックスを照会するために使用できる。選択は次のselectedElementChanged シグナルまで有効である。

選択されたカスタム項目のインデックス、または -1 を返します。

selectedElementも参照

int selectedLabelIndex()

任意のラベルタイプでselectedElementChanged シグナルを受信した後、選択されたラベルのインデックスを問い合わせるために使用できる。選択は次のselectedElementChanged シグナルまで有効である。

選択されたラベルのインデックス、または -1 を返す。

selectedElementも参照

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.