qt5 win7 设置了TranslucentBackground和FramelessWindowHint ,用QVideoWidget 播放视频有声音却没显示

时间:2022-06-04 23:15:13
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    resize(400,300);

    setWindowFlags(Qt::Window |Qt::FramelessWindowHint);
    setAttribute(Qt::WA_TranslucentBackground,true);

    player=new QMediaPlayer;
    videoWidget=new QVideoWidget(this);
    videoWidget->setGeometry(this->rect());
    QString  MP4="H:/project/black/black/MP4/Tell_Your_World.mp4";

    player->setMedia(QUrl::fromLocalFile(MP4));
    player->setVideoOutput(videoWidget);
    player->play();
}
qt版本是qt5.3.0 系统是win7 X64 开发软件是QTcreate 设置了TranslucentBackground和FramelessWindowHint ,用QVideoWidget 播放视频有声音却没显示,随便屏蔽一句都有视频显示。

方法1:用其他窗体透明方式,但是除了TranslucentBackground外,setstylesheet、qpalette方式设置alpha都是全黑,求高手指教!!
方法2:按官网的提示修改,官网有类似的问题,网址是http://qt-project.org/forums/viewthread/42867,但是试过用继承qvideowidget重写paintevent都无法解决。

有高手遇过同样问题么?求具体解决方法!!!

8 个解决方案

#1


要不你用qml去弄播放,然后嵌进去widget。

#2


求例子,本人新手,不了解QML

#3


你打开QT creator, 在欢迎examples界面,输入video搜索,打开一个WidgetVideo的例子,或者打开Player的例子,里面有详细的用法

#4


QVideoWidget貌似不是使用QBackingStore进行Raster绘图的,所以使用普通QWidget的方法会有问题,我是自己实现了QAbstractVideoSurface接口拿到像素数据,然后上传YUV三份纹理用GLSL画到QWindow里的

#5


    setWindowFlags(Qt::Window |Qt::FramelessWindowHint);
     setAttribute(Qt::WA_TranslucentBackground,true);
 在 new Ui::MainWindow之前调用。

#6


同遇相同问题,同求解决方案!窗口透明问题烦死了!

#7


我也遇到相同的问题 楼主求帮助

#8


楼主问题怎么解决的呢

#1


要不你用qml去弄播放,然后嵌进去widget。

#2


求例子,本人新手,不了解QML

#3


你打开QT creator, 在欢迎examples界面,输入video搜索,打开一个WidgetVideo的例子,或者打开Player的例子,里面有详细的用法

#4


QVideoWidget貌似不是使用QBackingStore进行Raster绘图的,所以使用普通QWidget的方法会有问题,我是自己实现了QAbstractVideoSurface接口拿到像素数据,然后上传YUV三份纹理用GLSL画到QWindow里的

#5


    setWindowFlags(Qt::Window |Qt::FramelessWindowHint);
     setAttribute(Qt::WA_TranslucentBackground,true);
 在 new Ui::MainWindow之前调用。

#6


同遇相同问题,同求解决方案!窗口透明问题烦死了!

#7


我也遇到相同的问题 楼主求帮助

#8


楼主问题怎么解决的呢