我有一个QGraphicsObject的子类。在本课程中,我使用QMediaPlayer和QGraphicsVideoItem来播放视频。我想在视频之上画画。
class MyClass : public QGraphicsObject
{
Q_OBJECT;
public slots:
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
public:
QGraphicsVideoItem *_movie_item;
QMediaPlayer *_movie_player;
}
在paint方法中,我想在_movie_item的顶部上绘制一个红色矩形。为了尝试这样做,我打电话给:
void MyClass::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
_movie_item->setVisible(true);
_movie_item->play();
painter->fillRect(startx, starty, size, size, Qt::red);
}
红色矩形在适当的位置绘制,但它总是在_movie_item下面。
有没有办法在_movie_item上绘制一个矩形而不创建另一个QGraphicsItem,如:
QGraphicsRectItem *_rect = new QGraphicsRectItem(_movie_item)
感谢。
答案 0 :(得分:0)
使用QGraphicsItem::ItemStacksBehindParent
标志可能会有所帮助。
该项目位于其父项后面。默认情况下,子项是 堆叠在父项的顶部。但是设置这个标志,孩子 将叠加在它后面。此标志对投影效果很有用 以及遵循父项几何的装饰对象 没有画在上面。这个标志是在Qt 4.5中引入的。
_movie_item->setFlag(QGraphicsItem::ItemStacksBehindParent);