基于折线图对QChartView了解

文章目录

    • 目的
    • QChart
    • QGraphicsWidget
    • QChartView
    • Qt绘制图表
    • 注意事项
    • 扩展

目的

我们知道Qt QChart 是可以绘制各种各样图(polar , 条状图, 折线图, 散点图等等). 但是还要需要我们对于常用qchart , qcharview, 以及chart表格中sereis对象进行整理。

QChart

首先我们要了解下, QChart是一个可以在QGraphicsScene中显示的QGraphicsWidget。它管理不同类型系列和其他图表相关对象(如图表系列、图例和轴)的图形表示。为了简单地在布局中显示图表,可以使用方便类QChartView来代替QChart。此外,通过使用QPolarChart类,可以将直线、样条曲线、面积和散点序列显示为极坐标图。 它继承自QGraphicsWidget。

QGraphicsWidget

QGraphicsWidget是一个扩展的基本项,它在QGraphicsItem之上提供了额外的功能。它在许多方面与QWidget相似:

  • 具有已定义的几何图形
  • 提供调色板、字体和样式
  • 支持带有布局设置
  • 使用grabShortcut()和insertAction()支持快捷方式和操作

与QGraphicsItem不同,QGraphicsWidget不是一个抽象类;您可以创建QGraphicsWidget的实例,而无需对其进行子类化。这种方法对于仅用于将子窗口小部件组织到布局中的窗口小部件非常有用。
如果您需要高级的输入焦点处理,例如选项卡焦点和激活或布局,QGraphicsWidget可以用作您自己的自定义项的基础项。
由于QGraphicsWidget类似于QWidget,并且具有类似的API,因此更容易将小部件从QWidget移植到QGraphicsWidget,而不是QGraphicsItem。

注意:基于QWidget的小部件可以使用QGraphicsProxyWidget直接嵌入到QGraphicsScene中。

QWidget 与 QGraphicsWidge的显著差异是:

QWidget QGraphicsWidge
QWidget uses integer geometry (QPoint, QRect). Coordinates and geometry are defined with qreals (doubles or floats, depending on the platform).
QWidget is hidden by default until you call show(). The widget is already visible by default; you do not have to call show() to display the widget
All widget attributes are supported. A subset of widget attributes are supported.
A top-level widget’s style defaults to QApplication::style A top-level item’s style defaults to QGraphicsScene::style
Standard drag and drop framework Graphics View provides a custom drag and drop framework, different from QWidget.
Full modality support Widget items do not support modality.

QGraphicsWidget支持Qt的小部件属性的子集(Qt::WidgetAttribute),如下表所示。此表中未列出的任何属性都不受支持,或者未使用。

Widget Attribute Usage
Qt::WA_SetLayoutDirection Set by setLayoutDirection(), cleared by unsetLayoutDirection(). You can test this attribute to check if the widget has been explicitly assigned a layoutDirection. If the attribute is not set, the layoutDirection() is inherited.
Qt::WA_RightToLeft Toggled by setLayoutDirection(). Inherited from the parent/scene. If set, the widget’s layout will order horizontally arranged widgets from right to left.
Qt::WA_SetStyle Set and cleared by setStyle(). If this attribute is set, the widget has been explicitly assigned a style. If it is unset, the widget will use the scene’s or the application’s style.
Qt::WA_Resized Set by setGeometry() and resize().
Qt::WA_SetPalette Set by setPalette().
Qt::WA_SetFont Set by setFont().
Qt::WA_WindowPropagation Enables propagation to window widgets.

尽管QGraphicsWidget继承了QObject和QGraphicsItem,但您应该使用QGraphicsIItem而不是QObject提供的函数来管理父项和子项之间的关系。这些功能控制物品的堆叠顺序及其所有权。

注意:对于为QGraphicsWidgets对象,QObject::parent()应该始终返回nullptr,但此策略没有严格定义。

QChartView

QChartView 可以显示图表的一个独立的小部件。图表视图不需要QGraphicsScene对象即可工作, 但要在现有的QGraphicsScene中显示图表,应使用QChart或QPolarChart类。
它继承自QGraphicsView, 我们之前了解过QGraphicsView 是可以在其QGraphicsScene中支持添加百万条QGraphicsItem.

Qt绘制图表

 QChart *chart = new QChart();

    chart->setTheme(QChart::ChartThemeQt);
    chart->setTitle(QString::fromLocal8Bit("显示坐标点"));
    chart->setMargins(QMargins(10,

你可能感兴趣的:(Qt,qchart)