[Qt-interest] multiple glwidget interaction

Sajjad dosto.walla at gmail.com
Wed Jul 7 18:49:24 CEST 2010


Hello John,

I am having some interesting behavior now.

If i instantiate the SharedWidgetData from the main it does not crash , but
it crashes if it is instantiated inside the constructor of the
TransformationMainWindow class.  I need to elaborate the design i done so
far:

1. I have created a main window using designer and created two widgets. Both
the widgets are promoted to corresponding gl widgets.

2. Declare another class named  TransformationMainWindow with  the following
hierarchy:

***********************************************************

class TransformationMainWindow : public QMainWindow : private
Ui::TransformationWindow
{

}

***********************************************************


3. Inside the constructor of TransformationMainWindow i try to instantiate
the SharedWidgetData class and it crashes. So i am attaching the class
declaration and definition. You might see that i am stil missing.


Thanks for the hints so far!



Sajjad

On Wed, Jul 7, 2010 at 5:15 PM, John McClurkin <jwm at nei.nih.gov> wrote:

> Sajjad wrote:
> > Hello John,
> >
> > I have declared a SharedWidgetData class that contains all  the matrices
> > that need to be shared between 2 gl widgets.
> >
> > Then i created a singleton class and instantiate one instance of the
> > SharedWidgetData  in the constructor of the top level window constructor
> > as follows:
> >
> >
> >
> ******************************************************************************
> > Singleton<SharedWidgetData>::init(new SharedWidgetData());
> >
> >
> ******************************************************************************
> >
> > Then i send the pointers of the newly instantiated object to both the
> > widgets so that both the widgets can access and update the matrices as
> > necessary.
> >
> > But the program crashes and while debugging it i found that the program
> > gives a segmentation fault in the above line.  Singleton class is
> > full-proof i believe since it has been used in another API and it has
> > been quite functional so far.
> >
> >
> >
> > Any hint to track  the issue?
>
> The Singleton class may be fool proof and may have been used
> successfully elsewhere, but it may be giving you problems in your
> instance. Try just creating an instance of your SharedWidgetData class;
>
> SharedWidgetData *p = new SharedWidgetData();
>
> If this also crashes, you have a problem in your constructor. If not
> there must be a problem with the Singleton implementation.
> >
> >
> > Regards
> > Sajjad
> >
> >
> >
> >
> >
> > On Tue, Jul 6, 2010 at 8:54 PM, John McClurkin <jwm at nei.nih.gov
> > <mailto:jwm at nei.nih.gov>> wrote:
> >
> >     Sajjad wrote:
> >      > Hello forum,
> >      >
> >      > I have two separate classes inherited from QGLWidget and both  the
> >      > classes need to share and update the projection , modelview and
> >     inverse
> >      > matrices . These matrices are defines as follows:
> >      >
> >      > I get  the modelview matrix by
> >      >
> >      > glGetDoublev(GL_MODELVIEW_MATRIX, modelview); And that modelview
> >     matrix
> >      > will be shared and updated by both the QGLWidget subclasses. I
> >     need to
> >      > have the following matrices declared, but not sure where to
> >     declare them.
> >      >
> >      > GLdouble modelview[16]
> >      > GLdouble projection[16]
> >      > GLdouble inverse[16]
> >      >
> >      >
> >      > I have declared the above matrices in one of the widget and i need
> to
> >      > pass the contents of these matrices to another gl widget. Do i
> >     have to
> >      > declare another three arrays in that widget as well?
> >      >
> >      >
> >      > I also need to set several signal and slots, like when ever the
> >     any of
> >      > the matrices changes the matrices will be passed with  the
> >     corresponding
> >      > slots. The slots may be of the same widget or the other widget.
> >      >
> >      >
> >      >
> >     I would define a class containing the three arrays with functions to
> get
> >     and set their values and signals that could be emitted by those
> >     functions whenever the values were accessed. Then instantiate just
> one
> >     instance of that class.
> >     _______________________________________________
> >     Qt-interest mailing list
> >     Qt-interest at trolltech.com <mailto:Qt-interest at trolltech.com>
> >     http://lists.trolltech.com/mailman/listinfo/qt-interest
> >
> >
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at trolltech.com
> http://lists.trolltech.com/mailman/listinfo/qt-interest
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20100707/ada83875/attachment.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: SharedWidgetData.h
Type: text/x-chdr
Size: 778 bytes
Desc: not available
Url : http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20100707/ada83875/attachment.bin 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: SharedWidgetData.cpp
Type: text/x-c++src
Size: 752 bytes
Desc: not available
Url : http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20100707/ada83875/attachment-0001.bin 


More information about the Qt-interest-old mailing list