나는 QGraphicsLineItem에 의해 연결된 QGraphicsScene에 QGraphicsSvgItem을 많이 가지고있다. 이 쇼는 나무 구조의 그래프입니다.Qt에서 불투명하지 않은 그래픽 항목으로 클리핑을 제어하려면 어떻게해야합니까?
내가하고 싶은 일은 선택한 하위 트리를 제외하고 모든 것이 투명 해지는 기능을 제공하는 것입니다. 일종의 "이 하위 트리를 강조 표시"기능. 그 부분은 쉬웠지만 결과는 반투명 한 SVG를 통해 볼 수 있기 때문에 추악합니다.
나는 장면의 다른 QGraphicsItem을 svg 항목에 클립하는 방법을 찾고 있는데, 이는 svg가 배경에 반투명 한 효과가 있음을 나타냅니다.
나는이 코드가 svg 's를 사용하지 않는다는 것을 알고 있지만 당신이 그렇게 생각한다면 당신은 그 자신을 대체 할 수 있다고 생각한다.
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QGraphicsScene scene;
for(int i = 0; i < 10; ++i) {
QGraphicsLineItem* line = new QGraphicsLineItem;
line->setLine(i * 25.0 + 1.0, 0, i * 25.0 + 23.0, 0);
scene.addItem(line);
}
for(int i = 0; i < 11; ++i) {
QGraphicsEllipseItem* ellipse = new QGraphicsEllipseItem;
ellipse->setRect((i * 25.0) - 9.0, -9.0, 18.0, 18.0f);
ellipse->setBrush(QBrush(Qt::green, Qt::SolidPattern));
ellipse->setOpacity(0.5);
scene.addItem(ellipse);
}
QGraphicsView view(&scene);
view.show();
return app.exec();
}
줄의 원안에 보이지 않게하고 싶습니다. OpenGL 렌더링을 사용하여 depth-buffer 및 stencil 버퍼를 사용하지 않으려 고 노력했습니다.
반투명하더라도 QGraphicsSvgItem (또는 QGraphicsEllipseItem의 예제 코드에서)을 계속 클리핑하려면 어떻게합니까?
아, 신청서의 전체 소스를보고 싶은 사람은 http://github.com/jjacobsson/calltree/tree/cts – JJacobsson