Я новичок в Qt.
Я пытаюсь добавить текстуру в пример проекта «basicshapes», который взят из демо Qt Creator.
Он написан на 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
Я не эксперт по Qt, однако, глядя на ошибку компилятора, вам нужно переопределить метод doClone, потому что он квалифицирован как чисто виртуальный.
Более подробную информацию об ошибке вашего компилятора можно найти на MSDN: https://msdn.microsoft.com/en-us/library/zxt206sk.aspx
Надеюсь, это поможет.