• 4179阅读
  • 1回复

[提问]qaxwidget与qopenglwidget组合使用显示异常问题 [复制链接]

上一主题 下一主题
离线hankern
 

只看楼主 倒序阅读 楼主  发表于: 2015-08-21
代码如下:
  1. QTabWidget *tt=new QTabWidget;
  2. MyOpenGLWidget *openGL = new MyOpenGLWidget ();
  3. QAxWidget *native = new QAxWidget();
  4. native->setControl(QStringLiteral("{f587310d-5306-494d-87e2-88334b46e781}"));//暴风影音控件
  5. native->setAttribute(Qt::WA_NativeWindow);
  6. native->setAttribute(Qt::WA_DontCreateNativeAncestors);
  7. tt->addTab(native,"n");
  8. tt->addTab(openGL,"o");
MyOpenGLWidget 继承于QOpenGLWidget,并重载了paintEvent事件,该事件内容为:
  1. void MyOpenGLWidget ::paintEvent(QPaintEvent *event)
  2. {
  3.     QPainter painter;
  4.     painter.begin(this);
  5.     painter.setRenderHint(QPainter::Antialiasing);
  6.     painter.fillRect(event->rect(), QColor(255,255,0));
  7.     painter.end();
  8. }
在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


离线hankern

只看该作者 1楼 发表于: 2015-08-22
我认为是qaxwidget的绘制环境(context)影响了qopenglwidget的绘制环境(context),但是怎么才能给qopenglwidget独立分配一个context呢
快速回复
限100 字节
 
上一个 下一个