找回密码
 立即注册
收起左侧

QML 嵌入QWidget后的透明问题

3
回复
8739
查看
[复制链接]
累计签到:2 天
连续签到:1 天
来源: 2017-5-26 11:42:11 显示全部楼层 |阅读模式
8Qter豆
目前有一个项目需要将qml  界面嵌入到 qwidget 中我的实现如下:
  1. QQuickView *view = new QQuickView();
  2.     //无边框,背景透明
  3.     view->setFlags(Qt::FramelessWindowHint);
  4. view->setColor(QColor(Qt::transparent));
  5.     //加载qml,qml添加到资源文件中可避免qml暴露
  6.     view->rootContext()->setContextProperty("udpSenderCDP",&udpSender);
  7.     view->setSource(QUrl("qrc:/main.qml"));

  8.     QWidget *container = QWidget::createWindowContainer(view,glVideo);
  9.     container->setGeometry(0, 0, 600, 480);
  10.     container->show();
复制代码
qml成功嵌入到qwidget(glVideo)  中,但是我发现
view->setColor(QColor(Qt::transparent));设置的透明效果导致
qml界面全变黑了......
有没有遇到同样的问题呢......
求高手帮忙

最佳答案

查看完整内容

试试qquickwidget ,你用的方法是5.3的老方法了
回复

使用道具 举报

尚未签到

2017-5-26 11:42:12 显示全部楼层
试试qquickwidget ,你用的方法是5.3的老方法了
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2017-5-27 09:12:56 显示全部楼层
  1. QQuickWidget *container = new QQuickWidget(QUrl("qrc:/main.qml"),glVideo);
  2.     container->rootContext()->setContextProperty("udpSenderCDP",&udpSender);
  3.     container->setGeometry(0, 0, 1920, 1080);
  4.     container->setAttribute(Qt::WA_AlwaysStackOnTop, true);
  5.     container->setClearColor(QColor(Qt::transparent));
  6.    
复制代码

最终我改成这样了,成功透明化。
谢谢Joey_Chan
回复

使用道具 举报

尚未签到

2017-5-27 22:45:37 显示全部楼层
alex_wang 发表于 2017-5-27 09:12
最终我改成这样了,成功透明化。
谢谢Joey_Chan

   其实我是猜的哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了