qaxwidget与qopenglwidget组合使用显示异常问题

hankern 2015-08-19 09:37:37
代码如下:

QTabWidget *tt=new QTabWidget;
MyOpenGLWidget *openGL = new MyOpenGLWidget ();

QAxWidget *native = new QAxWidget();
native->setControl(QStringLiteral("{f587310d-5306-494d-87e2-88334b46e781}"));//暴风影音控件
native->setAttribute(Qt::WA_NativeWindow);
native->setAttribute(Qt::WA_DontCreateNativeAncestors);

tt->addTab(native,"n");
tt->addTab(openGL,"o");

MyOpenGLWidget 继承于QOpenGLWidget,并重载了paintEvent事件,该事件内容为:

void MyOpenGLWidget ::paintEvent(QPaintEvent *event)
{
QPainter painter;
painter.begin(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.fillRect(event->rect(), QColor(255,255,0));
painter.end();
}

在main函数中设置app.setAttribute(Qt::AA_DontCreateNativeWidgetSiblings);

问题:
1、MyOpenGLWidget 为黑屏,并不是预期中的黄色背景
2、如果将
tt->addTab(native,"n");
tt->addTab(openGL,"o");
变为
tt->addTab(openGL,"o");
tt->addTab(native,"n");
MyOpenGLWidget 显示正常。

例子程序在https://github.com/hankern/Test-QOpenGLWidget


...全文
456 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hankern 2015-08-22
  • 打赏
  • 举报
回复
我认为是qaxwidget的绘制环境(context)影响了qopenglwidget的绘制环境(context),但是怎么才能给qopenglwidget独立分配一个context呢
hankern 2015-08-20
  • 打赏
  • 举报
回复
感谢jiangcaiyang123回复,我试了其它控件,还是不行的哦
彩阳 2015-08-20
  • 打赏
  • 举报
回复
尝试将暴风影音控件换成其它的控件试试?

16,213

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧