本示例显示了如何创建带有负条的条形图。以温度图作为示例进行讲解。
温度记录示例
Qt组件推荐:
- QtitanRibbon |下载试用:遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件,研究为Windows、Linux和Mac OS X提供功能完整的Ribbon组件。
- QtitanChart |下载试用:是一个C++库,代表一组,这些控件使您可以快速地为应用程序提供漂亮而丰富的图形。并且支持所有主要的桌面
该示例显示了如何创建带有负条的条形图。对于我们的示例,我们使用温度数据。

运行示例
要从Qt Creator运行示例,请打开欢迎模式并从示例中选择示例。有关更多信息,请访问构建和运行示例。
板条箱负条
首先,我们创建两个 barset 并将数据附加到它们。一组代表最低温度,另一组代表最高温度。
QBarSet *low = new QBarSet("Min"); QBarSet *high = new QBarSet("Max"); *low << -52 << -50 << -45.3 << -37.0 << -25.6 << -8.0 << -6.0 << -11.8 << -19.7 << -32.8 << -43.0 << -48.0; *high << 11.9 << 12.8 << 18.5 << 26.5 << 32.0 << 34.8 << 38.2 << 34.8 << 29.8 << 20.4 << 15.1 << 11.8;
我们创建系列并将条形集附加到它。该系列拥有 barsets 的所有权。
QStackedBarSeries *series = new QStackedBarSeries(); series->append(low); series->append(high);
在这里,我们创建图表对象并向其添加系列。我们使用 setTitle 设置图表的标题,然后通过调用 setAnimationOptions( QChart::SeriesAnimations )打开系列的动画
QChart *chart = new QChart(); chart->addSeries(series); chart->setTitle("Temperature records in celcius"); chart->setAnimationOptions(QChart::SeriesAnimations);
要在轴上显示类别,我们需要创建一个QBarCategoryAxis。在这里,我们创建一个带有类别列表的类别轴,并将其添加到底部对齐的图表中,作为 x 轴。图表拥有轴的所有权。对于 y 轴,我们使用与左侧对齐的值轴。我们更改 y 轴的范围,因为这比自动缩放提供更好的结果。
QStringList categories = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; QBarCategoryAxis *axisX = new QBarCategoryAxis(); axisX->append(categories); axisX->setTitleText("Month"); chart->addAxis(axisX, Qt::AlignBottom); QValueAxis *axisY = new QValueAxis(); axisY->setRange(-52, 52); axisY->setTitleText("Temperature [°C]"); chart->addAxis(axisY, Qt::AlignLeft); series->attachAxis(axisX); series->attachAxis(axisY);
我们也想展示传奇。为此,我们从图表中获取图例指针并将其设置为可见。我们还通过将其对齐设置为Qt::AlignBottom将图例放置在图表的底部。
chart->legend()->setVisible(true); chart->legend()->setAlignment(Qt::AlignBottom);
最后,我们将图表添加到视图中。我们还为图表视图打开了抗锯齿功能。
QChartView *chartView = new QChartView(chart); chartView->setRenderHint(QPainter::Antialiasing);
图表已准备好显示。我们将图表设置为窗口的中央小部件。我们还设置图表窗口的大小并显示它。
QMainWindow window; window.setCentralWidget(chartView); window.resize(600, 300); window.show();
================================================== ==
想要了解或购买Qt正版授权的朋友,欢迎咨询官方客服
Qt技术交流交流群开通,QQ搜索群 “765444821”或者扫描二维码加入

标签:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!