凡例の着脱

注: これはCharts with Widgets Galleryの例の一部です。

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

この例では、棒グラフの系列を示し、棒グラフの集合をインタラクティブに追加または削除できるようにしています。凡例は、バー・セットの追加や削除に伴う系列の変化を反映します。凡例のアタッチメント、アライメント、移動とサイズ変更は、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();

本書に含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。