0

我是 Qt 的新手。我正在尝试将纹理添加到来自 Qt Creator 演示的示例项目“basicshapes”。它是用完美的 C++ 编写的,因为这是我的需要。有使用的类,例如:

Qt3D::QTransform
Qt3D::QSphereMesh
Qt3D::QPhongMaterial

和许多其他人,但我无法意识到如何为其添加纹理。有一个片段:

Qt3D::QPhongMaterial *sphereMaterial = new Qt3D::QPhongMaterial();
sphereMaterial->setDiffuse(QColor(QRgb(0xa69929)));

所以我试图添加:

MyTextureImage *t = new MyTextureImage();
MyTextureProvider *x = new MyTextureProvider();
x->addTextureImage(t);
sphereMaterial->setTextureParameter("SphereTexture", x);

在我从抽象类派生之前:

class MyTextureProvider : public Qt3D::QAbstractTextureProvider { };
class MyTextureImage : public Qt3D::QAbstractTextureImage { };

但我得到了错误:

error: C2259: 'MyTextureImage' : cannot instantiate abstract class
due to following members:
'Qt3D::QNode *Qt3D::QNode::doClone(void) const' : is abstract
4

1 回答 1

0

我不是 Qt 专家,但是通过查看编译器错误,您需要重写 doClone 方法,因为它被限定为纯虚拟方法。

可以在 MSDN 上找到有关编译器错误的更多信息:https ://msdn.microsoft.com/en-us/library/zxt206sk.aspx

我希望这有帮助。

于 2015-08-30T11:39:33.777 回答