По сетке свойств оси (цвет), как это работает? - PullRequest
2 голосов
/ 27 сентября 2019

Из этого исходного кода:

#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

Видите эту стену прямо спереди, она серого цвета(Могу ли я описать это так?) по сравнению с другими стенами.Как я могу настроить линии сетки таким образом?Я имею в виду только одну стену.

1 Ответ

3 голосов
/ 27 сентября 2019

Как правило, вы можете изменить цвет линии сетки с помощью следующего кода:

#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();
}

Тем не менее, кажется, что не влияет на то, как отображаются линии сетки.Я думаю, что это относится к освещению трехмерной сцены и, конечно, к положению камеры.

Моя небольшая примерная программа вращает камеру сцены, и, следовательно, также изменяется освещение линий сетки.

Я думаю, что здесь мало что можно сделать, поскольку интерфейсы не позволяют изменять шейдерный код линий сетки.

...