【发布时间】:2013-06-19 05:31:35
【问题描述】:
阅读此讨论后:Draw on top of xoverlay using Qt 我最终得到了此代码:
class Player : public QGst::Ui::VideoWidget { ... }
void Player::play() {
QGst::PipelinePtr pipeline = QGst::ElementFactory::make("playbin2").dynamicCast<QGst::Pipeline>();
watchPipeline(pipeline);
pipeline->setProperty("uri", "/path/to/my/video.mp4");
QGst::BusPtr bus = pipeline->bus();
bus->addSignalWatch();
QGlib::connect(bus, "message", this, &Player::onBusMessage);
pipeline->setState(QGst::StatePlaying);
}
所以我在QWidget 中播放了我的视频。现在我想在这个上面添加另一个QWidget 来绘制一些东西或放置另一个QWidget 并进行alpha 混合。我在主应用程序中尝试了这段代码:
Player *player = new Player(this);
QWidget *videoOverlay = new QWidget(player);
// set the videoOverlay geometry
videoOverlay->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
videoOverlay->setAttribute(Qt::WA_TranslucentBackground);
但我得到一个黑色不透明QWidget。根本没有透明度。
我错过了什么?
【问题讨论】:
标签: video qt4 gstreamer qt4.8 qtgstreamer