Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3277710
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 17, 20262026-05-17T19:23:58+00:00 2026-05-17T19:23:58+00:00

I’m designing a simple GUI. I have Widgets, which have children and one parent.

  • 0

I’m designing a simple GUI. I have Widgets, which have children and one parent. Each Widget is a Composite object, with a vector of WidgetComposite objects. One of those WidgetComposites is a PaintingBehaviour, but the Widget doesn’t know it as such.

To display my window, I use a Visitor, called the ScreenVisitor. When the Visitor is called, this is what happens :

The first widget, the WidgetScene, iterates on each of its Widgets and calls the “accept(Visitor* v)” method. Then, each widget accepts the visitor, then iterates on its children.

For instance, this is a list of the objects (in the order it’s going to happen) the visitor will have to accept.

root
    child1
       child2
         child3
       child4
    child5
       child6
    child7

Now, my problem is simple : I want each Widget to be painted on its parent. How would you proceed ? I’ve tried with a tree, but I always have the same problem : when I have to go up in the hierarchy (for instance, after having displayed child3, when I have to display child4) I don’t know how to get the right parent.

I’m coding in C++ but this problem is not language specific.

Do you have any ideas ? Thanks in advance !

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-17T19:23:59+00:00Added an answer on May 17, 2026 at 7:23 pm

    All right, since I could not find anything else, I tried this solution :

    The visitor create a tree of “DisplayNodes” objects, who are basically a class made essentially of pointers. Here are the attributes of the class :

    class DisplayNode
    {
       private:
         Widget* myWidget;
         PaintingBehaviour* myPB;
         DisplayNode* myParent;
         vector <DisplayNode*>myChildren;
    };
    

    Every DisplayNode is stocked in a vector in my visitor.

    Then, for each PaintingBehaviour, I test the parent of the Widget connected, and check if one of my Node’s “myWidget” is this parent. So I can find back where is everything. After that, it’s quite easy, a simple paint method in DisplayNode with recursive calls to the children, called with the first DisplayNode of the scene…

    Since it’s a bit heavy, I create the tree of DisplayNode only once (though I do it again if PaintingBehaviour or widgets are added / removed). If the tree already exists, I go directly to the recursive painting.

    It’s a bit twisted (and probably not quite optimized), I’ll admit, but it works ! But if anybody has a better solution, I’ll be more than happy to hear it.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I need to clean up various Word 'smart' characters in user input, including but
We are using XSLT to translate a RIXML file to XML. Our RIXML contains
i want to parse a xhtml file and display in UITableView. what is the
public static bool CheckLogin(string Username, string Password, bool AutoLogin) { bool LoginSuccessful; // Trim

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.