当我在qt中使用qopenglwidget和qaxwidget时,我遇到了qopenglwidget无法正确显示的奇怪问题。我不知道为什么。代码是这样的:
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();
}
我还设置了app.setAttribute(Qt :: AA_DontCreateNativeWidgetSiblings);在主要功能。
问题是
1. MyOpenGLWidget的背景是黑色的,而不是我想要的黄色
2.当我改变时 TT-> addTab(天然的," N&#34); TT-> addTab(OpenGL中," O&#34); 至 TT-> addTab(OpenGL中," O&#34); TT-> addTab(天然的," N&#34); MyOpenGLWidget显示正确
中创建了一个测试项目