提问人:Silverness 提问时间:11/14/2015 最后编辑:Silverness 更新时间:9/8/2016 访问量:625
Qt: 如何在QGraphicsVideoItem上绘制QRect?
Qt: How to draw a QRect on top of a QGraphicsVideoItem?
问:
我有一个QGraphicsObject的子类。在这门课中,我使用带有 QGraphicsVideoItem 的 QMediaPlayer 来播放视频。我正在尝试在视频的顶部画画。
class MyClass : public QGraphicsObject
{
Q_OBJECT;
public slots:
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
public:
QGraphicsVideoItem *_movie_item;
QMediaPlayer *_movie_player;
}
在绘画方法中,我想在_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下方。
有没有办法在不创建另一个QGraphicsItem的情况下在_movie_item顶部绘制矩形,例如:
QGraphicsRectItem *_rect = new QGraphicsRectItem(_movie_item)
谢谢。
答:
2赞
erdinc
9/8/2016
#1
使用标志可能会有所帮助。QGraphicsItem::ItemStacksBehindParent
项目堆叠在其父项后面。默认情况下,子项是 堆叠在父项的顶部。但是设置这个标志,孩子 将堆叠在它后面。此标志对于投影效果很有用 以及遵循父项几何图形的装饰对象 没有在上面画画。这个标志是在Qt 4.5中引入的。
_movie_item->setFlag(QGraphicsItem::ItemStacksBehindParent);
评论