【问题标题】:Per axis grid properties (color), how it works?每轴网格属性(颜色),它是如何工作的?
【发布时间】:2019-09-26 23:38:57
【问题描述】:

从此源代码:

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

我明白了:

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

【问题讨论】:

    标签: c++ qt opengl 3d qt5


    【解决方案1】:

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

    #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 场景的照明有关,当然也与相机位置有关。

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

    我认为,您在这里几乎无能为力,因为界面不允许您更改网格线的着色器代码。

    【讨论】:

    • 也许你可以使用 QCustomplot 或类似的库。如果 3d 不是必需品,则有许多潜在的替代品。
    • 3D 是必需品。
    • 也许你可以试试github.com/lava/matplotlib-cpp。只需浏览互联网。还要考虑一下,什么是真正重要的,什么是美好的。
    • 当然,已经快速检查了 matplotlib-cpp 但是我仍在考虑 Qt 方法。
    【解决方案2】:

    解决方案可能是添加自定义 3d 项目,设置网格和纹理颜色。调整项目的大小使其看起来像一个网格轴并设置位置。对尽可能多的轴线重复这个想法。

    想知道是否有(更好的)替代方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      • 2015-08-18
      相关资源
      最近更新 更多