Results 1 to 9 of 9

Thread: how to write QT openGL code in two classes

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Join Date
    Jan 2006
    Location
    Belgium
    Posts
    1,938
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows
    Thanked 268 Times in 268 Posts
    Wiki edits
    20

    Default Re: how to write QT openGL code in two classes

    I suggest a good C++ book.

    Are you using Qt3 or Qt4?
    The hellogl example uses QGLWidget like you are. But it shows you how to use the QGLWidget constructor. It doesn't matter if you split your program in different parts.

    C++ contains several ways to exchange information between different objects or different classes.

  2. #2
    Join Date
    Jan 2006
    Location
    Belgium
    Posts
    1,938
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows
    Thanked 268 Times in 268 Posts
    Wiki edits
    20

    Default Re: how to write QT openGL code in two classes

    By the way, I think you handle this a bit in the wrong way.

    You should only have one GL Widget.
    Then you can create different classes that do different things. Like a Building class or a Car class which each can serialise data and create the GL code. Then you can paint that GL code on the widget. There are several techniques and programming patterns you can use for this.

  3. The following user says thank you to tbscope for this useful post:

    qtUse (30th August 2010)

  4. #3
    Join Date
    Aug 2010
    Posts
    6
    Qt products
    Qt4
    Platforms
    Unix/X11
    Thanks
    1

    Default Re: how to write QT openGL code in two classes

    Ohhhh .....I verified, HelloGL's using QGLWidget only as you said
    I tried according to it and it's finely taking GL contexts from calling function

    Thanks for your prompt help, tbscope

    @second post:
    But in order to draw, say car, I need to paint different sides in car drawing class only (to avoid passing all its vertices to single QGLWidget), so GL context must be available to my BuildingPainter class. So I am using multiple OGLWidgets
    Last edited by qtUse; 30th August 2010 at 21:12.

  5. #4
    Join Date
    Jan 2006
    Location
    Belgium
    Posts
    1,938
    Qt products
    Qt4
    Platforms
    Unix/X11 Windows
    Thanked 268 Times in 268 Posts
    Wiki edits
    20

    Default Re: how to write QT openGL code in two classes

    I would probably go with the Model and View pattern. The view being the QGLWidget and the model a tree of objects.

    Example:
    Qt Code:
    1. +------------------+
    2. | MyGlModel |
    3. | |
    4. | Rootitem | +-------------+
    5. | | | | MyGlView |
    6. | +- Item | | |
    7. | | |----->| setModel() |
    8. | +- Item | | |
    9. | | | | |
    10. | + Item | +-------------+
    11. | |
    12. +------------------+
    13.  
    14.  
    15.  
    16.  
    17.  
    18. +------------------+ +-------------------+
    19. | MyGlView | | MyGlItem |
    20. | | | |
    21. | paintGl() | | drawItem(context) |
    22. | | |----->| |
    23. | +- iterate | | |
    24. | over model | +-------------------+
    25. | |
    26. +------------------+
    27.  
    28.  
    29.  
    30. void MyGlView::drawGl()
    31. {
    32. // recursive call each item in the model tree
    33.  
    34. // For each item:
    35. item->drawItem(context(), /*maybe other stuff*/);
    36. }
    37.  
    38. void MyGlItem::drawItem(QGLContext *context, /*maybe other things*/)
    39. {
    40. // Do the GL Painting for this item based on the context.
    41. }
    To copy to clipboard, switch view to plain text mode 

Similar Threads

  1. linking the files with openGL code
    By Abeer in forum Newbie
    Replies: 1
    Last Post: 25th May 2010, 01:10
  2. Replies: 0
    Last Post: 6th December 2009, 00:41
  3. Qt with OpenGL ES for ARM9 - All OpenGL ES tests have failed!
    By vinpa in forum Qt for Embedded and Mobile
    Replies: 1
    Last Post: 3rd December 2009, 10:10
  4. Code Completion in UI classes
    By ChrisW67 in forum Qt Tools
    Replies: 5
    Last Post: 19th June 2009, 00:26

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Qt is a trademark of The Qt Company.