Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct
Изменение линий в Q3DSurface
-
Здравствуйте
Есть задача нарисовать 3D сплайн
Решил сделать это с помощью Q3DSurfaceQWidget *wdg = new QWidget;
float minX = std::numeric_limits<float>::max(),
minY = std::numeric_limits<float>::max(),
minZ = std::numeric_limits<float>::max(),
maxX = std::numeric_limits<float>::min(),
maxY = std::numeric_limits<float>::min(),
maxZ = std::numeric_limits<float>::min();
Q3DSurface *graph = new Q3DSurface();
QWidget *container = QWidget::createWindowContainer(graph);
QHBoxLayout *hLayout = new QHBoxLayout(wdg);
hLayout->addWidget(container, 1);
QSurfaceDataProxy *prox = new QSurfaceDataProxy();
QSurface3DSeries *series = new QSurface3DSeries(prox);
QSurfaceDataArray *dataArray = new QSurfaceDataArray;
int index = 0;
int size = sqlSize(query);
dataArray->reserve(size);
QSurfaceDataRow *newRow = new QSurfaceDataRow(size);
while (query.next())
{
float x = query.value(2).toFloat();
if (x<minX)
minX=x;
if (x>maxX)
maxX=x;
float y = query.value(1).toFloat();
if (y<minY)
minY=y;
if (y>maxY)
maxY=y;
float z = query.value(0).toFloat();
if (z<minZ)
minZ=z;
if (z>maxZ)
maxZ=z;
(*newRow)[index++].setPosition(QVector3D(x, y, z));
*dataArray << newRow;
}
QRect rec = QApplication::desktop()->screenGeometry();
double height = rec.height();
double width = rec.width();
graph->activeTheme()->setType(Q3DTheme::ThemeEbony);
graph->activeTheme()->setFont(font);
graph->setShadowQuality(QAbstract3DGraph::ShadowQualitySoftLow);
graph->axisX()->setRange(minX-100, maxX+100);
graph->axisY()->setRange(minY-100, maxY+100);
graph->axisZ()->setRange(minZ-100, maxZ+100);
wdg->setGeometry(width/4, height/4, width/2, height/2);
prox->resetArray(dataArray);
graph->addSeries(series);
wdg->show();Однако линия выходит очень тонкая, никак не могу найти настройки для изменения ее цвета/утолщения
Фонт меняет только аксисы
Буду признателен за помощь
-
А что примеры говорят?