我有一个从QWidget继承的类继承的类A。我的类包含一个媒体播放器和一个QVideoWidget。我希望我的对象 A 在每次播放列表中的新视频开始播放时绘制一个小矩形几毫秒,而不是视频小部件的小部件部分。 所以,我已经连接了我的插槽
connect(player, &QMediaPlayer::currentMediaChanged,this,&videoDisplay::drawRect);
但我无法正确使用drawRect函数。尝试使用QPainter,但它给了我错误
QWidget::paintEngine: Should no longer be called
QPainter::begin: Paint device returned engine == 0, type: 1
有什么建议吗?
谢谢
Qt
中的绘画通常只能作为update
请求的结果进行。
与其尝试直接绘制,不如使用标志或类似内容来表示新项目已从播放列表中启动......
bool m_new_video;
然后只需使用 lambda 作为插槽并让它设置标志并请求update
......
connect(player, &QMediaPlayer::currentMediaChanged,
[this]()
{
m_new_video = true;
update();
});
然后,您的videoDisplay::paintEvent
实现可以根据m_new_video
的值绘制它必须绘制的任何内容。