c++ 创建一个qbarset柱状图,包含1-10十个数字,大于8的柱体设为红色,小于4的柱体设为绿色
时间: 2024-09-24 16:30:11 浏览: 44
GSM.rar_c++ 柱状图_钻孔_钻孔柱状图
5星 · 资源好评率100%
在C++中,你可以使用Qt库中的QBarSet和QChart来创建一个柱状图,以下是一个简化的示例,展示如何创建一个带有颜色区分的柱状图:
```cpp
#include <QGuiApplication>
#include <QQmlEngine>
#include <QChartView>
#include <QBarSeries>
#include <QBarSet>
#include <QColor>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QQmlEngine engine;
engine.rootContext()->setContextProperty("chartData", createChartData());
// 加载QML文件
qmlRegisterType<ChartView>("ChartViewExample", 1, 0, "ChartView");
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
return a.exec();
}
// C++函数来生成数据和颜色映射
QList<QPair<int, QColor>> createChartData() {
QList<QPair<int, QColor>> data;
for (int i = 1; i <= 10; ++i) {
if (i > 8) {
data.append({i, QColor(Qt::red)}); // 红色柱体
} else if (i < 4) {
data.append({i, QColor(Qt::green)}); // 绿色柱体
} else {
data.append({i, Qt::black}); // 其他默认黑色
}
}
return data;
}
class ChartView : public QObject {
Q_OBJECT
public slots:
void drawChart() {
QChart* chart = new QChart();
QChartView* chartView = new QChartView(chart, this);
QBarSeries* series = new QBarSeries();
series->setName(QStringLiteral("Number Series"));
foreach (const auto& pair, context()->property("chartData").value<QList<QPair<int, QColor>>>()) {
QBarSet* barSet = new QBarSet(QString::number(pair.first));
barSet->setColor(pair.second);
series->append(barSet);
}
chart->addSeries(series);
chart->setTitle(QStringLiteral("1-10 Number Bar Chart"));
chart->view()->setRenderHint(QPainter::Antialiasing); // 提高图形质量
emit readyToDisplay();
}
};
```
在这个例子中,`createChartData()` 函数负责生成数据和对应的颜色,`ChartView` 类则用于显示图表。在主程序中加载QML文件并设置数据。在QML中,你可以通过`ChartView` 的`drawChart`信号触发绘制。
阅读全文