Qt ChartsのQABstractSeriesクラス


文章の先発は公衆番号から:
nullobject .
個人サイト:https://www.nullobject.cn
この記事では主にQABstractSeriesのAPIとその使用について説明します.
0 x 00は前に書きます:Qt Chartsの構成構造
この文章の内容を理解する前に、読者はQt Chartsの基本的な構成に対して全体的な認識を持つ必要があり、具体的にはこの文章を参考にすることができる:Qt Chartsの基本的な構成.Qt Chartsは主にQChartView、QChart、QLegendパターン、座標軸(QABstractAxisサブクラスによって実現)、データソース(QABstractSeriesサブクラスによって実現)などから構成される.
0 x 01 QABstractSeriesクラス
上図から分かるように、Qt Chartsチャートでは、データの最終提示は主にQABstractSeriesとその派生クラス(上図はQLineSeries)が担当しており、通常、実際の開発ではQABstractSeriesの派生クラスを直接使用して機能を実現している.QAbstractSeriesは、Qt Chartsモジュール内のすべてのデータ系列クラス(Q*Series)のベースクラスとして、そのサブクラスとの継承関係は、概ね以下の通りである.
Tips:QABstractSeriesのサブクラスとそのサブクラスのサブクラス数が多いため、ここではQABstractSeriesからQLineSeriesを例にとると、QLineSeriesはQXYSeriesから継承され、QXYSeriesはQAbstractSeriesクラスから継承されていると同時に、QLineSeries関連ドキュメントとソースコードを学習することによって、QLineSeriesの機能実装のほとんどが親QXYSeriesとQABtractSeriesクラスから継承されていることがわかります.QLineSeriesを使いこなし、美しい折れ線図を実現するには、QXYSeriesとQABstractSeriesクラスのAPIを理解することが必要です.本稿では主にQABstractSeriesについて説明します.
0 x 02 QUbstractSeriesプロパティ
  • QString name; HTML形式のテキストをサポートするseries名、つまりQABstractSeriesが表すグラフィックインスタンス名を取得して設定します.
  • QString name() const;seriesインスタンス名を取得します.
  • void setName(const QString &name);series凡例名を設定します.サンプル名が変更されると、QABstractSeriesのnameChanged()信号がトリガーされます.

  • bool useOpenGL; OpenGLアクセラレータを開くかどうかseriesを取得して設定します.
  • bool useOpenGL() const;OpenGLアクセラレータをオンにするかどうかを取得します.
  • void setUseOpenGL(bool enable=true);OpenGLアクセラレータレンダリングのオン/オフを設定し、デフォルトでオフにします.このオプションが変更されると、QABstractSeriesのuseOpenGLChanged()信号がトリガーされます.

  • Tips:OpenGLアクセラレータをオンにしないでパフォーマンス要件を満たし、このオプションにもたらす
    副作用に慣れていない場合は、
    OpenGL加速をオンにしないことをお勧めします!

    大きなデータ量のグラフシーケンスを描画する必要がある場合、OpenGL加速をオンにするとseriesの描画性能が著しく向上します.しかし、Qt Chartsが実現するOpenGL加速(QOpenGLWidgetコンポーネントによる実現)は、MDIプログラム環境下でOpenGL加速をオンにしたグラフシーケンスがすべてのMDIサブウィンドウの上に置かれ、グラフが重なるという問題がこれまでにも存在している.
    また、現在はQLineSeriesとQScatterSeriesの2種類のグラフのみがOpenGLペイントをオンにすることをサポートしており、QLineSeriesが面積図QAReaSeriesのエッジラインである場合もOpenGLをオンにすることはできない.そこで、慎重にこのオプションをオンにします!
  • qreal opacity; グラフのシーケンス表示の透明度を取得および設定します.
  • qreal opacity() const;seriesの現在の設定の透明度を取得します.
  • void setOpacity(qreal opacity);series表示の透明度を設定し、設定範囲:全透明0.0~1.0不透明で、この属性値が変更されるとopacityChanged()信号がトリガーされます.

  • bool visible; 現在のグラフを表示するかどうかを取得し、設定します.
  • bool isVisible() const;現在のグラフを表示するかどうかを取得します.
  • void setVisible(bool visible = true);現在のグラフを表示するかどうかを設定します.このプロパティ値が変更されるとvisibleChanged()信号がトリガーされます.

  • const SeriesType type; この属性は現在のグラフシーケンスseriesのタイプを表し、QABstractSeriesには、この属性を操作するための純粋な虚関数が宣言されています.
    virtual QAbstractSeries::SeriesType type() const = 0;
    QABstractSeriesのサブクラスは、この関数を手動で実装し、対応するグラフタイプを返す必要があります.SeriesTypeは、Qt Chartsが現在サポートしているグラフのタイプを記述する列挙クラスです.
  • 0 x 03 QAbstractSeries共有メソッド
    QABstractSeriesの主な公有方法は次のとおりです.
  • bool QAbstractSeries::attachAxis(QAbstractAxis *axis);グラフシーケンスseriesに座標軸を追加します.追加に成功した場合はtrueを返します.そうでない場合はfalse:
  • を返します.
        //    、    
        QValueAxis *axisX = new QValueAxis;
        QValueAxis *axisY = new QValueAxis;
        //        
        axisX->setLinePen(QPen(Qt::blue));
        axisY->setLinePen(QPen(Qt::blue));
        //              
        QPen pen(Qt::black);
        pen.setWidth(1);
        axisX->setGridLinePen(pen);
        axisY->setGridLinePen(pen);
        //       QChart  
        chart->addAxis(axisX,Qt::AlignBottom);
        chart->addAxis(axisY,Qt::AlignLeft);
        //         
        axisX->setRange(0,25);
        axisY->setRange(0,15);
        //           series    
        series->attachAxis(axisX);
        series->attachAxis(axisY);

    効果:
    同じ方向に複数の座標軸が同時に同じグラフシーケンスに取り付けられている場合、これらの座標軸は同じ目盛り範囲に設定され、自動調整された目盛り範囲は、最後にアイコンシーケンスに取り付けられた座標軸目盛り範囲であることが実証されている.
        //           
        QValueAxis *axisX1 = new QValueAxis;
        QValueAxis *axisY1 = new QValueAxis;
        axisX1->setRange(-5,15);
        axisY1->setRange(0,5);
        chart->addAxis(axisX1,Qt::AlignBottom);
        chart->addAxis(axisY1,Qt::AlignLeft);
        //             series
        series->attachAxis(axisX1);
        series->attachAxis(axisY1);

    効果:
  • QList QAbstractSeries::attachedAxes();グラフシーケンスの現在添付されているすべての軸セットを取得します:
  •     //          series        
        qDebug() << "attached axes:" <<  series->attachedAxes();

    結果:
  • QChart *QAbstractSeries::chart() const;現在のグラフシーケンスseriesが属するQChartコンポーネントを取得します.QChartコンポーネントにseriesをQChart::addSeries()方法で追加した後、seriesが追加されたQChartオブジェクトポインタをこの方法で取得することができる.
  • bool QAbstractSeries::detachAxis(QAbstractAxis *axis);現在のグラフのシーケンスから座標軸を分離します.

  • 0x04 The End.