相关疑难解决方法(0)

让QWidget透明化

我有一个QWidget基于覆盖的小部件,它应该绘制一些文本并在我的应用程序的中央小部件上进行.问题是我无法将叠加小部件的背景设置为透明.我已经尝试过的:

  1. setPalette(Qt::transparent);
  2. setAttribute( Qt::WA_TranslucentBackground, true );
  3. setAttribute( Qt::WA_OpaquePaintEvent, true );
  4. setAutoFillBackground(false);
  5. setStyleSheet("QWidget{background-color: transparent;}");
  6. setAttribute(Qt::WA_NoSystemBackground);

c++ qt qt4

15
推荐指数
3
解决办法
3万
查看次数

在Ubuntu的QT5中将透明QWidget放在QMediaView之上

目标

我希望基于QT5的GUI的背景是正在播放的视频文件.我还希望能够以透明度为我的GUI组件设置样式,以便通过它们显示视频.

我不确定这是否完全可以完成.可能是因为我错过了一条重要线索(我毕竟是Qt初学者),或者可能只是因为它本身并不适合工作.但作为一个乐观主义者,我已尽力尝试.

第一次尝试

我最小的第一次尝试看起来像这样:

int main( int argc, char **argv ){
    QApplication app(argc, argv);
    QMediaPlayer *media=new QMediaPlayer(0);
    QVideoWidget *video=new QVideoWidget(0); //new QGLWidget()
    media->setVideoOutput(video);
    media->setMedia(QUrl::fromLocalFile("/tmp/avatar.mp4"));
    media->setPosition(3000000);
    media->play();
    QPushButton *pb=new QPushButton(video);
    pb->setText(QString("BOB"));
    //pb->setStyleSheet(QString("background:transparent;"));
    video->show();
    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)

按钮位于播放视频的顶部,这很好.但仔细观察,您会在按钮的角落看到一些黑色像素,表示它在视频上不透明,但呈现为不透明的矩形.

第一个结果截图

第二次尝试

我尝试使用按钮设置样式background:transparent;(请参阅上面代码中的注释行).这使按钮的背景透明,但按钮后面的黑框现在更加明显.

在此输入图像描述

其他尝试

我已经在网上阅读了几个关于如何做到这一点的技巧.没有人对我有用.我曾尝试使用QGraphicsScene和朋友,不同的布局堆栈,有问题的小部件上的不同属性等等.我的最后一次尝试是将QVideoWidget的父级设置为QGLWidget()的实例,希望强制硬件加速能解决我的问题(我的计算机具有带二进制驱动程序的硬件3d加速).这只是让窗口完全无法显示,而我仍然可以听到背景中播放的视频的音轨,表明应用程序仍在运行.

请求

我真的希望有一些善良和聪明的QT5开发人员可以帮助我实现我的梦想,即在Ubuntu的QT5中播放视频的小部件.

谢谢!

c++ video ubuntu user-interface qt5

9
推荐指数
1
解决办法
3905
查看次数

标签 统计

c++ ×2

qt ×1

qt4 ×1

qt5 ×1

ubuntu ×1

user-interface ×1

video ×1