我有一堆QGraphicsSvgItem的QGraphicsScene繪製由QGraphicsLineItem的連接。這個節目是一個樹形結構圖。如何用Qt中的非透明圖形項控制裁剪?
我想要做的是提供一個功能,其中除了選定的子樹以外的所有東西都變得透明。一種「突出這個子樹」的功能。這部分很容易,但結果很難看,因爲現在可以通過半透明的svg來看到這些線條。
我正在尋找一些方法來將其他QGraphicsItem的場景剪貼到svg項目中,從而給出svg是背景半透明窗口的效果。
我知道這段代碼不使用SVG,但我想你可以自己替換,如果你這麼傾向。
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渲染來處理深度緩衝區和模板緩衝區,但無濟於事。
如何獲取QGraphicsSvgItem(或示例代碼中的QGraphicsEllipseItem)即使它們是半透明仍然會剪切這些行?
哦,任何想看完整源代碼的人都可以去http://github.com/jjacobsson/calltree/tree/cts – JJacobsson 2009-10-30 07:49:22