QChart画大量横向叠加柱状图时,颜色变为白色
使用QChart画柱状图,大约1000根,展示时,柱子都变成了白色,如何解决。
参考图如下:
QColor GREEN = QColor(0, 230, 0);
QColor RED = QColor(255, 50, 50);
// 创建一个颜色轴对象
QColorAxis *axis = new QColorAxis;
QVector<QColor> colors;
colors << RED << GREEN;
set0->setBrush(QBrush(GREEN, Qt::SolidPattern));
set1->setBrush(QBrush(RED, Qt::SolidPattern));
QHorizontalStackedBarSeries *series = new QHorizontalStackedBarSeries();
for(int i=0; i < 1000; i++) {
*set0 << 1 + QRandomGenerator::global()->bounded(4.1);
*set1 << 2+ QRandomGenerator::global()->bounded(1.1);
}
series->append(set0);
series->append(set1);
series->setUseOpenGL(true);
connect(series, SIGNAL(hovered(bool, int, QBarSet*)), this, SLOT(sltTooltip(bool, int, QBarSet*)));
QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle("Simple horizontal stacked barchart example");
chart->setAnimationOptions(QChart::SeriesAnimations);
chart->setBackgroundBrush(QBrush(QColor(0, 0, 0)));
QStringList categories;
for(int i=0; i< 1000; i++) {
categories << "Jane" + QString::number(i);
}
QBarCategoryAxis *axisY = new QBarCategoryAxis();
axisY->append(categories);
chart->addAxis(axisY, Qt::AlignLeft);
series->attachAxis(axisY);
QValueAxis *axisX = new QValueAxis();
chart->addAxis(axisX, Qt::AlignBottom);
series->attachAxis(axisX);
chart->legend()->setVisible(true);
chart->legend()->setAlignment(Qt::AlignBottom);
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
chartView->setStyleSheet("background-color:black");
问题已解决,代码如下:
QColor GREEN = QColor(0, 230, 0);
QColor RED = QColor(255, 50, 50);
QHorizontalStackedBarSeries *series = new QHorizontalStackedBarSeries();
series->setBarWidth(0.5);
for(int i=0; i < 1000; i++) {
*set0 << 1 + QRandomGenerator::global()->bounded(4.1);
*set1 << 2+ QRandomGenerator::global()->bounded(1.1);
}
series->append(set0);
series->append(set1);
set0->setColor(GREEN);
set1->setColor(RED);
set0->setBorderColor(GREEN);
set1->setBorderColor(RED);
series->setUseOpenGL(true);
connect(series, SIGNAL(hovered(bool, int, QBarSet*)), this, SLOT(sltTooltip(bool, int, QBarSet*)));
QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle("Simple horizontal stacked barchart example");
chart->setAnimationOptions(QChart::SeriesAnimations);
QStringList categories;
for(int i=0; i< 1000; i++) {
categories << "Jane" + QString::number(i);
}
QBarCategoryAxis *axisY = new QBarCategoryAxis();
axisY->append(categories);
chart->addAxis(axisY, Qt::AlignLeft);
series->attachAxis(axisY);
QValueAxis *axisX = new QValueAxis();
chart->addAxis(axisX, Qt::AlignBottom);
series->attachAxis(axisX);
chart->legend()->setVisible(true);
chart->legend()->setAlignment(Qt::AlignBottom);
QChartView *chartView = new QChartView(chart);
chartView->setRenderHint(QPainter::Antialiasing);
chartView->setStyleSheet("background-color:black");