我們已經發現,geometry->setLineWidth(3);
在下面的代碼擴展到其它QML元件和可扭曲它們,即使這些其它QML元件是「正常」的QML元件(沒有QQuickItem
子類的下方他們)。這對我來說似乎很奇怪,你可能會影響其他元素,我不知道它是否是一個錯誤?文檔說這個函數只應該影響當前元素,但那不是我的經驗。任何人都可以權衡爲什麼geometry->setLineWidth(3);
有這麼笨重的權力?實施updatePaintNode導致其他QML元件也畫不正確
QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data){
QSGGeometry *geometry =
new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), 2);
geometry->setDrawingMode(GL_LINES);
geometry->setLineWidth(3);
geometry->vertexDataAsPoint2D()[0].set(0, 0);
geometry->vertexDataAsPoint2D()[1].set(width(), height());
QSGFlatColorMaterial *material = new QSGFlatColorMaterial;
material->setColor(QColor(255, 0, 0));
QSGGeometryNode *node = new QSGGeometryNode;
node->setGeometry(geometry);
node->setFlag(QSGNode::OwnsGeometry);
node->setMaterial(material);
node->setFlag(QSGNode::OwnsMaterial);
delete oldNode;
return node;
}
如果我省略行geometry->setLineWidth(3);
那麼問題就消失了。
這實際上可以從https://bugreports.qt-project.org/secure/Dashboard.jspa獲得更快的(雙關語)答案! – mlvljr