问题

从这个源代码:

 #include "mainwindow.h"

#include <Q3DScatter>

using namespace QtDataVisualization;

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
    Q3DScatter *graph = new Q3DScatter;
    QWidget *widget = QWidget::createWindowContainer(graph);
    setCentralWidget(widget);
}

MainWindow::~MainWindow() {}
 

我明白了:

enter image description here

如果与其他墙相比,直接在前面看到那个墙,它的灰度(我可以这样描述吗?).我怎样才能这样调整网格线?我的意思是只有一个墙.

  最佳答案

基本上,您可以根据以下代码更改网格线的颜色。

 #include <QApplication>
#include <QtDataVisualization/Q3DScatter>
#include <QtDataVisualization/Q3DLight>
#include <QtDataVisualization/Q3DTheme>
#include <QDebug>
#include <QTimer>

int main(int argc, char* argv[])
{
    QApplication a(argc, argv);
    auto scatter = new QtDataVisualization::Q3DScatter;
    auto widget=QWidget::createWindowContainer(scatter);
    widget->show();
    scatter->activeTheme()->setType(QtDataVisualization::Q3DTheme::ThemeQt);
    scatter->activeTheme()->setGridLineColor(QColor("red"));
    auto light = scatter->scene()->activeLight();
    auto camera = scatter->scene()->activeCamera();
    int counter = 0;
    QTimer timer;
    timer.start(1 / 60);
    QObject::connect(&timer, &QTimer::timeout, [&]() {
        camera->setXRotation(counter++/60);
    });
    return a.exec();
}
 

但是,似乎没有影响网格线是如何呈现的.我认为这对3D场景的照明和摄像头的位置有影响.

我的小示例程序旋转场景的相机,因此网格线的照明也会发生变化。

我想,这里你可以做的很少,因为接口不允许你更改网格线的着色器代码.

  相同标签的其他问题

c++qtopengl3dqt5
上一个问题:
下一个问题: