首页 > 解决方案 > 具有稀疏网格的 Q3DBars,可能吗?

问题描述

在下面的图中,列的标签变得稀疏。如何使网格线稀疏?

在此处输入图像描述

这是代码

.pro

QT       += core gui widgets datavisualization
TEMPLATE = app
SOURCES += main.cpp

主文件

#include <QtDataVisualization>

using namespace QtDataVisualization;

int main(int argc, char **argv)
{
    QGuiApplication app(argc, argv);

    Q3DBars bars;
    bars.setFlags(bars.flags() ^ Qt::FramelessWindowHint);
    bars.resize(800,600);
    bars.scene()->activeCamera()->setCameraPosition(30,30);

    bars.setShadowQuality(QAbstract3DGraph::ShadowQualityNone);

    bars.rowAxis()->setTitle("Rows");
    bars.rowAxis()->setTitleVisible(true);

    bars.columnAxis()->setTitle("Columns");
    bars.columnAxis()->setTitleVisible(true);

    QStringList row_labels{"0", "", "20", "", "40"};
    QStringList column_labels;

    int columns = 40;
    for (int i = 0; i < columns; i++)
        if (i % 10)
            column_labels << "";
        else
            column_labels << QString::number(i);

    bars.rowAxis()->setRange(0, row_labels.count()-1);
    bars.columnAxis()->setRange(0, column_labels.count()-1);

    bars.setBarSpacing(QSizeF(1,columns));

    QBar3DSeries *series = new QBar3DSeries;
    series->dataProxy()->setRowLabels(row_labels);
    series->dataProxy()->setColumnLabels(column_labels);

    QBarDataRow *data = new QBarDataRow;
    for (int i = 0; i < columns; i++)
        *data << i;
    series->dataProxy()->addRow(data);
    bars.addSeries(series);

//    bars.activeTheme()->setGridEnabled(false);
    bars.show();

    return app.exec();
}

标签: c++qtqt5data-visualizationqwidget

解决方案


推荐阅读