凡例の表示・非表示

注:これは 「ウィジェット付きチャート ギャラリー」のサンプルの一部です。

デフォルトでは、チャートは、そのチャートが格納されているのと同じグラフィックスビュー内に凡例を描画します。場合によっては、ユーザーが凡例を別の場所に描画したいこともあるでしょう。これを可能にするために、凡例をチャートから切り離すことができます。 切り離すとは、凡例がチャートの端に固定されなくなり、チャートが凡例のレイアウトを制御しなくなることを意味します。代わりに、凡例のジオメトリはユーザーによって制御されるため、凡例の位置やサイズを自由に調整できます。これにより、凡例をチャートのコンテンツの上に浮かせたり、別のグラフィックスシーンに描画したりすることも可能です。 この例のプログラムを実行することで、凡例の挙動を確認できます。

この例では、棒グラフの系列を表示し、棒グラフのセットをインタラクティブに追加または削除できるようにしています。棒グラフのセットが追加または削除されると、凡例は系列の変更を反映します。凡例の固定状態、配置、および移動やサイズ変更の可否は、QLegend のメソッドを使用して制御できます。

凡例が切り離されている場合は、自由にサイズ変更や配置を行うことができます。凡例のインタラクティブ機能が有効になっている場合、ユーザーは凡例を自由にドラッグしてサイズ変更できます。ユーザーが凡例をチャートのいずれかの端からドラッグして外すと、自動的にチャートのその側に再配置されます。

棒グラフの凡例を切り離す例と、グラフの設定に関するさまざまなオプションを示すスクリーンショット

棒グラフを用いた別の凡例分離の例と、グラフの設定オプションが異なる様子を示すスクリーンショット

ここでは、凡例を表示し、その配置をチャートの下部に設定します。

m_chart->legend()->setVisible(true);
m_chart->legend()->setAlignment(Qt::AlignBottom);

このスニペットは、凡例をチャートから切り離す方法を示しています。

legend->detachFromChart();

ここでは、凡例をチャートに再接続します。背景は非表示に設定されています。

legend->attachToChart();

ここでは、凡例が切り離されたり接続されたりした際に発せられるシグナルに接続し、切り離されたときは背景を表示し、接続されたときは非表示にします。これにより、凡例が切り離されているときに、その中の項目がどのように配置されているかをより見やすくすることができます。

connect(legend, &QLegend::attachedToChartChanged, [legend, this](bool attachedToChart) {
    m_toggleAttachedButton->setChecked(attachedToChart);
    legend->setBackgroundVisible(!attachedToChart);
    m_geometrySettings->setDisabled(attachedToChart);
});

ここでは、マウスなどのポインティングデバイスを使用して、ユーザーが凡例を操作できるようにする方法を示します。

legend->setInteractive(true);

ここでは、凡例がインタラクティブでない場合の、切り離された凡例の寸法設定方法を示しています。新しい値を設定した後、update を呼び出して画面上の変更を反映させます。

    QRectF geom = m_chart->legend()->geometry();
    if (qFuzzyCompare(geom.x(), m_legendPosX->value())
            && qFuzzyCompare(geom.y(), m_legendPosY->value())
            && qFuzzyCompare(geom.width(), m_legendWidth->value())
            && qFuzzyCompare(geom.height(), m_legendHeight->value()))
        return;

    m_chart->legend()->setGeometry(QRectF(m_legendPosX->value(),
                                          m_legendPosY->value(),
                                          m_legendWidth->value(),
                                          m_legendHeight->value()));
    m_chart->legend()->update();

© 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.