この議論を読んだ後: Qt を使用して xoverlay の上に描画する私はこのコードで終わった:
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
、アルファ ブレンディングを使用して別のオブジェクトを配置したりしたいと考えています。メインアプリでこのコードを試しました:
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
ます。透け感は全くありません。私は何が欠けていますか?