Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Implementing a multi-level, embedded unified interface in QT?
QtWS25 Last Chance

Implementing a multi-level, embedded unified interface in QT?

Scheduled Pinned Locked Moved General and Desktop
7 Posts 2 Posters 1.9k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    BlazeRifted
    wrote on last edited by
    #1

    My specific application requires the user to design a graphical object through multiple levels. The problem is that the UI must allow the user to manually click on some kind of toolbar to click any desired level and that level must have some more or less functionality than the previous one while keeping it in the same interface. Let me give an abstract example.

    Level 1: Logic Gates, Level 2: Circuits, Level 3: CPU's, Level 4: Integrated Systems

    Now let's say the user just finished logic gates and now wants to go to circuits, they click on Level 2 in the toolbar and this brings up a set of tools completely different from the logic gate tools, and the view port display has made the logic gates 10% smaller to make them fit into the circuits however the user is not opening another interface but the interface changes it's look, feel, and features to support the levels.

    Is this possible to do in QT? Any suggestions

    1 Reply Last reply
    0
    • N Offline
      N Offline
      nicky j
      wrote on last edited by
      #2

      Im not an expert but here is a possible solution for your tool bar.
      Use a QDockWidget that contains a QTabWidget. the QTabWidget will have 4 tabs corresponding to the 4 levels, each with there own tools for building the circuits. As for the view port that zooms in and out depending on the layer being dealt with, you could probably do it with openGL in a QGLWidget "see here":http://qt-project.org/doc/qt-5.0/qtopengl/qglwidget.html

      openGL is great for making 2d and 3d views and even games. I don't really know anything about openGL or QGLWidget, so I'm not sure how you would draw the circuits and stuff, but its worth a look. To me, your project seems almost like a game, so it may be worth it to go poke around the game development forum :)

      Your project sounds very cool! I would love to see it in action one day!

      1 Reply Last reply
      0
      • B Offline
        B Offline
        BlazeRifted
        wrote on last edited by
        #3

        Thanks! I love your enthusiasm and I will be sure to show you it when it is finished.

        I haven't actually started the UI yet even though of programs unique to certain levels only, I just didn't know how to integrate them. If I made these 4 different tabs, would they allow a whole new set of features and tools to be put in that unique ONE level and allow switching between both while keeping the viewport the same (showing the logic gates but smaller)?

        So a designer can go the circuit level and implement a tool that is nowhere to be found on the logic gate level, BUT can still integrate with it.

        1 Reply Last reply
        0
        • N Offline
          N Offline
          nicky j
          wrote on last edited by
          #4

          okay I think your asking if each tab had different tool could they all integrate together. Correct me if Im wrong.

          The answer is yes! The pieces of the circuit would probably each be there own class (easiest sounding way to me). These classes would all have properties (like ohms for a resistor, volts for a battery, etc) that define their behavior and how they interact with each other as well as there look and feel. Clicking a tool button in one of the tabs would create a new instance of that class. You can do the zoom of the QGLWidget based on the tabs I think. I believe there is a signal called activeChanged() that you can hook the zoom up to (check the QTabWidget Docs). So if the active tab is 1, it would be zoomed into the Logic Gate, but if 4 is active it will zoom out to the Integrated Circuits. That being said, programming this is going to be very tough and time consuming. Before you go to town on this project, check out the tutorials on QGLWidget (Qt Creator->Welcome->Examples). This project will involve many classes and thousands of line of code. But don't let that dissuade you! Just start small and don't hesitate to completely start over once in a while!

          1 Reply Last reply
          0
          • N Offline
            N Offline
            nicky j
            wrote on last edited by
            #5

            oh a neat example is 'elastic nodes' it demonstrates the zoom in/out and a draggable thingy. Its in Qt Creator->Welcome->Examples

            1 Reply Last reply
            0
            • B Offline
              B Offline
              BlazeRifted
              wrote on last edited by
              #6

              I appreciate everything you have done. It's rare to see someone so helpful on the internet. I just had a few verification questions to end this post.

              1. If I open another tab will the main view-port stay the same? What is in the viewport may change but does the overall viewport stay embedded and does not require another visual representation .
              2. If I open a new tab is it possible to modify the actual window to show the icons and nodes for different tools than other levels. So on Lv.1 I may have a box on the right with abunch of tools and on Lv.2 the box would either be shaped differently (with new tools or stay the same but change tools. All without changing the viewport.
              3. Let's say their is a tool that routes logic gates into circuits. On the CPU Level can the same tool be used but it is given the previously CUSTOMED MADE circuits to instead route together from user specifications or must the tool be specific to it's class?. The tool simply takes a object and routes it in a volume. Can different classes and object be given to the tool and routed even if they are still in design and not saved.
              4. (Last Question) Can they be designed completely independent from each level but are still integrated when they come together?

              That's about it. Thanks for your advice.

              1 Reply Last reply
              0
              • N Offline
                N Offline
                nicky j
                wrote on last edited by
                #7

                No problem, I'm still new to Qt as well!
                The answer to all your questions is yes. Im not sure how to implement them though and I have no clue on how to do #3 and #4.

                1 Reply Last reply
                0

                • Login

                • Login or register to search.
                • First post
                  Last post
                0
                • Categories
                • Recent
                • Tags
                • Popular
                • Users
                • Groups
                • Search
                • Get Qt Extensions
                • Unsolved