本文根据http://blog.csdn.net/liyuanbhu/article/details/7585471,经亲测正确运行,于是将开发步骤拿出来和大家分享。
1) pro文件:
#-------------------------------------------------
#
# Project created by QtCreator 2017-07-30T21:16:12
#
#-------------------------------------------------
QT += core gui opengl
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = qwt3d_readArray
TEMPLATE = app
SOURCES += main.cpp
HEADERS +=
##############################################################
LIBS += -LC:/Qt/Qt5.5.0/5.5/msvc2012/lib -lqwtplot3dd
DEFINES += QT_DLL QWT3D_DLL
CONFIG += opengl
#include
#include
using namespace Qwt3D;
double** allocateData(int columns, int rows)
{
double** data = new double* [columns] ;
for ( int i = 0; i < columns; ++i)
{ data[i] = new double [rows]; }
return data;
}
void deleteData(double**data, int columns)
{
for ( int i = 0; i < columns; i++)
{ delete [] data[i]; }
delete [] data;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
SurfacePlot w;
int x = 10, y = 20;
double ** p = allocateData(10, 20);
for(int k = 0; k < x; k++)
{
for(int l = 0; l < y; l++)
{
p[k][l] = l;
}
}
w.loadFromData(p, x, y, 0, x, 0, y);
deleteData(p, x);
w.setRotation(30,0,15);
w.setScale(1,1,1);
w.setShift(0,0,0);
w.setZoom(0.9);
w.updateData();
w.updateGL();
w.show();
return a.exec();
}
一、注意下面这句: p[k][l] = l;
k 是X方向的坐标,l 是Y方向坐标。
二、p必须是 double **类型,double[][]是不行的。
三、注意w.loadFromData(p,x,y,0,x,0,y);这句。最后的0,x表明X轴的量程,但并不是数组的列数!!你可以把量程改写为任何数字,显示的结果都是不变的,只不过坐标轴刻度变化而已。Y轴的情况也一样。