本文整理汇总了C++中QSGNode::removeAllChildNodes方法的典型用法代码示例。如果您正苦于以下问题:C++ QSGNode::removeAllChildNodes方法的具体用法?C++ QSGNode::removeAllChildNodes怎么用?C++ QSGNode::removeAllChildNodes使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QSGNode
的用法示例。
在下文中一共展示了QSGNode::removeAllChildNodes方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: updatePaintNode
QSGNode* Graph::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data)
{
QSGNode* rootNode = QQuickItem::updatePaintNode(oldNode, data);
if (rootNode == NULL) {
rootNode = new QSGNode();
rootNode->setFlag(QSGNode::OwnedByParent, true);
}
else {
rootNode->removeAllChildNodes();
}
DrawAxes(rootNode);
return rootNode;
}
示例2: updatePaintNode
QSGNode* AudioBarSpectrumItem::updatePaintNode(QSGNode* oldNode, UpdatePaintNodeData*) {
if (!m_analyzer) return oldNode;
if (!isVisible()) return oldNode;
const std::vector<double>& points = m_analyzer->getSimplifiedSpectrum();
const double gain = m_agcEnabled ? m_analyzer->getAgcValue() : m_manualGain;
const int pointCount = points.size();
if (pointCount < 2) return oldNode;
// -------------------- Prepare QSG Nodes:
QSGNode* parentNode = nullptr;
if (oldNode) {
parentNode = static_cast<QSGNode*>(oldNode);
} else {
parentNode = new QSGNode;
}
// adapt child count:
int childCount = parentNode->childCount();
if (childCount != 2) {
parentNode->removeAllChildNodes();
QSGGeometryNode* node = new QSGGeometryNode;
QSGGeometry* geometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), 3);
geometry->setDrawingMode(GL_TRIANGLE_STRIP);
node->setGeometry(geometry);
node->setFlag(QSGNode::OwnsGeometry);
QSGFlatColorMaterial* material = new QSGFlatColorMaterial;
material->setColor("#fff");
node->setMaterial(material);
node->setFlag(QSGNode::OwnsMaterial);
parentNode->appendChildNode(node);
// Attention: TODO: colors are swapped!
node = new QSGGeometryNode;
geometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), 3);
geometry->setDrawingMode(GL_TRIANGLE_STRIP);
node->setGeometry(geometry);
node->setFlag(QSGNode::OwnsGeometry);
material = new QSGFlatColorMaterial;
material->setColor(m_color);
node->setMaterial(material);
node->setFlag(QSGNode::OwnsMaterial);
parentNode->appendChildNode(node);
}
QSGGeometryNode* const qsgNode = static_cast<QSGGeometryNode*>(parentNode->childAtIndex(0));
QSGGeometryNode* const qsgNodeOutline = static_cast<QSGGeometryNode*>(parentNode->childAtIndex(1));
if (!qsgNode || !qsgNodeOutline) {
qCritical() << "[SpectrumItem] Could not get QSG Node.";
return nullptr;
}
QSGGeometry* const geometry = qsgNode->geometry();
QSGGeometry* const geometryOutline = qsgNodeOutline->geometry();
if (!geometry || !geometryOutline) {
qCritical() << "[SpectrumItem] Could not get QSG Geometry.";
return nullptr;
}
const int verticesCount = pointCount * 7;
const int outlineVerticesCount = pointCount * 7;
geometry->allocate(verticesCount);
geometryOutline->allocate(outlineVerticesCount);
QSGGeometry::Point2D* const vertices = geometry->vertexDataAsPoint2D();
QSGGeometry::Point2D* const verticesOutline = geometryOutline->vertexDataAsPoint2D();
if (! vertices || !verticesOutline) {
qCritical() << "[SpectrumItem] Could not get QSG vertices.";
return nullptr;
}
const double itemWidth = width();
const double itemHeight = height();
const double barWidth = (itemWidth / pointCount) * 0.4;
const double spaceWidth = (itemWidth / pointCount) * 0.6;
const double endLineHeight = itemHeight / 100.0;
// draw spectrum:
for (int i = 0; i < pointCount; ++i) {
const float x = itemWidth * (i / float(pointCount));
const float y = itemHeight * (1 - points[i] * gain);
vertices[i*7].set(x, itemHeight);
vertices[i*7+1].set(x, y);
vertices[i*7+2].set(x + barWidth, itemHeight);
vertices[i*7+3].set(x + barWidth, y);
vertices[i*7+4].set(x + barWidth, itemHeight);
vertices[i*7+5].set(x + barWidth, itemHeight);
vertices[i*7+6].set(x + barWidth + spaceWidth, itemHeight);
const float y2 = qMin(itemHeight, itemHeight * (1 - points[i] * gain) + endLineHeight);
verticesOutline[i*7].set(x, itemHeight);
verticesOutline[i*7+1].set(x, y2);
verticesOutline[i*7+2].set(x + barWidth, itemHeight);
verticesOutline[i*7+3].set(x + barWidth, y2);
verticesOutline[i*7+4].set(x + barWidth, itemHeight);
verticesOutline[i*7+5].set(x + barWidth, itemHeight);
verticesOutline[i*7+6].set(x + barWidth + spaceWidth, itemHeight);
}
//.........这里部分代码省略.........