qt - Putting QGLWidget inside QTabWidget causes warning "inconsistent hierarchy..." -
i have tab , put object inherited qglwidget. opengl works fine somehow displays warning:
inconsistent hierarchy, parent: qaccessibleinterface(0x28297c8 name="" role=user role obj=qstackedwidget(0x2826b80, name = "qt_tabwidget_stackedwidget") "invisib le" ) child: qaccessibleinterface(0x26f5d18 name="" role=client childc=1 obj=qw idget(0x26ec968, name = "tab") "invisible" ) if put gl object outside tab displays no warning. suspect there's wrong between qtabwidget , qglwidget. btw, use qt 5.0.2 , visual studio 2010
here's simple example of ui design , code reproduce issue

glimagedisplay.h
#ifndef _glimagedisplay_h_ #define _glimagedisplay_h_ #include "stdafx.h" #include <qtopengl/qglwidget> class glimagedisplay : public qglwidget { q_object public: glimagedisplay(qwidget *parent = 0); protected: void initializegl(); void resizegl(int w, int h); void paintgl(); }; #endif glimagedisplay.cpp
#include "stdafx.h" #include "glimagedisplay.h" #include <gl/glu.h> #include <gl/glut.h> glimagedisplay::glimagedisplay(qwidget *parent) : qglwidget (parent) { setmousetracking(true); } void glimagedisplay::initializegl() { gldisable(gl_texture_2d); gldisable(gl_depth_test); gldisable(gl_color_material); glenable(gl_blend); glenable(gl_polygon_smooth); glblendfunc(gl_src_alpha, gl_one_minus_src_alpha); glclearcolor(0, 0, 0, 0); } void glimagedisplay::resizegl(int w, int h) { glviewport(0, 0, w, h); glmatrixmode(gl_projection); glloadidentity(); gluortho2d(0, w, 0, h); glloadidentity(); } void glimagedisplay::paintgl() { glclear(gl_color_buffer_bit); glcolor3f(1,0,0); glbegin(gl_polygon); glvertex2f(100,100); glvertex2f(100,300); glvertex2f(300,100); glend(); } in setupui function (generated code), warning appears after calling tabwidget->addtab(tab, qstring());
void setupui(qmainwindow *qtgltestclass) { if (qtgltestclass->objectname().isempty()) qtgltestclass->setobjectname(qstringliteral("qtgltestclass")); qtgltestclass->resize(600, 400); centralwidget = new qwidget(qtgltestclass); centralwidget->setobjectname(qstringliteral("centralwidget")); gridlayout_2 = new qgridlayout(centralwidget); gridlayout_2->setspacing(6); gridlayout_2->setcontentsmargins(11, 11, 11, 11); gridlayout_2->setobjectname(qstringliteral("gridlayout_2")); tabwidget = new qtabwidget(centralwidget); tabwidget->setobjectname(qstringliteral("tabwidget")); tab = new qwidget(); tab->setobjectname(qstringliteral("tab")); gridlayout = new qgridlayout(tab); gridlayout->setspacing(6); gridlayout->setcontentsmargins(11, 11, 11, 11); gridlayout->setobjectname(qstringliteral("gridlayout")); widget = new glimagedisplay(tab); widget->setobjectname(qstringliteral("widget")); gridlayout->addwidget(widget, 0, 0, 1, 1); tabwidget->addtab(tab, qstring()); // warning appears ///// gridlayout_2->addwidget(tabwidget, 0, 0, 1, 1); qtgltestclass->setcentralwidget(centralwidget); retranslateui(qtgltestclass); tabwidget->setcurrentindex(0); qmetaobject::connectslotsbyname(qtgltestclass); } // setupui
solved. use newer version qt 5.1.0 , warning message disappears
Comments
Post a Comment