c++ - Q3DBars 在垂直墙上有网格,如何?
问题描述
这是剧情
这是代码
.pro
QT += core gui widgets datavisualization
TEMPLATE = app
SOURCES += main.cpp mainwindow.cpp
HEADERS += mainwindow.h
主文件
#include "mainwindow.cpp"
#include <QApplication>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
主窗口.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
~MainWindow();
};
#endif // MAINWINDOW_H
主窗口.cpp
#include "mainwindow.h"
#include <QMainWindow>
#include <QtDataVisualization/Q3DBars>
using namespace QtDataVisualization;
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
resize(800,600);
Q3DBars *graph = new Q3DBars;
setCentralWidget(QWidget::createWindowContainer(graph));
graph->scene()->activeCamera()->setCameraPosition(30,30);
graph->setBarSpacing(QSizeF(1,3));
QBar3DSeries *series = new QBar3DSeries;
graph->addSeries(series);
QStringList row_labels{"0", "", "20", "", "40"};
QStringList column_labels{"0", "", "20", "", "40"};
graph->rowAxis()->setRange(0, row_labels.count()-1);
graph->columnAxis()->setRange(0, column_labels.count()-1);
series->dataProxy()->setRowLabels(row_labels);
series->dataProxy()->setColumnLabels(column_labels);
// graph->activeTheme()->setGridEnabled(false);
}
MainWindow::~MainWindow(){}
现在的问题:
我可以在垂直墙上有网格线吗?我的意思是图片中的垂直线,与地板相同。
解决方案
Q3DBars
虽然可能不可能Q3DScatter
:
#include "mainwindow.h"
#include <Q3DScatter>
using namespace QtDataVisualization;
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
auto chart = new Q3DScatter;
setCentralWidget(QWidget::createWindowContainer(chart));
auto series = new QScatter3DSeries;
chart->addSeries(series);
chart->axisX()->setRange(0,50);
chart->axisY()->setRange(0,50);
chart->axisZ()->setRange(0,50);
chart->setShadowQuality(QAbstract3DGraph::ShadowQualityNone);
auto add_bar = [](int x, int y, int z){
auto bar = new QScatterDataArray;;
while(z-- > 0)
*bar << QVector3D(y, z, x);
return bar;
};
QList<QScatterDataArray*> row;
for(int i = 0; i < 5; i++)
row << add_bar(0, i*10, 20);
foreach (auto bar, row)
series->dataProxy()->addItems(*bar);
}
MainWindow::~MainWindow() {}
推荐阅读
- java - 如何使用 android studio 中的 MediaStore Api 在 android 11 中获取特定文件夹,如 WhatsApp (.Status) 文件夹
- elasticsearch - 过滤器不适用于弹性搜索中嵌套字段的非嵌套聚合
- python - Neo4J python驱动程序在运行到docker容器时不会引发错误
- woocommerce - 获取产品变体描述以显示在 woocommerce 中的订单项目上?
- tomcat - Jersey jax-rs 应用程序在使用 Tomcat 9 的端点上返回 404 错误
- robotframework - Robotframework 获得重复迭代
- css - 如何在自定义 CSS 类中使用 tailwindcss 颜色?
- react-native - 常量 currIndex = useRef(0) 。如何在反应原生的类组件中使用useRef
- excel - 在 VBA excel 中复制/粘贴值范围
- python - 两种嵌入模型的联合训练(KGE + GloVe)