Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt Creator and other tools
  4. How to change a widget ancestor in Qt Creator 2.2.0 Designer
QtWS25 Last Chance

How to change a widget ancestor in Qt Creator 2.2.0 Designer

Scheduled Pinned Locked Moved Qt Creator and other tools
15 Posts 5 Posters 15.0k 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.
  • R Offline
    R Offline
    raulgd
    wrote on last edited by
    #1

    Hi everyone,

    I'm designing a QDialog in the Qt Creator 2.2.0 integrated GUI Designer, and I added a few widgets, but if I drag a widget on top of another, the widget being dragged becomes the child of the bottom widget.

    After that, the Object inspector tree shows that the bottom widget becomes the ancestor of the top widget, now, how do I set the top widget ancestor so that the bottom widget isn't it's ancestor anymore?

    I clicked everywhere, googled, searched the Qt Assistant to no avail, does anyone now if this is even possible in the designer? thanks!

    Raul Guerrero
    http://jimi.mx

    1 Reply Last reply
    0
    • G Offline
      G Offline
      goetz
      wrote on last edited by
      #2

      This happens only with bottom widgets that are containers (e.g. QWidget, QGroupBox, QFrame and the like).

      You can break the parent-child relationship by dragging the child, moving it out of the parent and dropping it on another place, e.g. on the QDialog itself or another container.

      To make room for the new widget, it can help to break an existing layout (if there is any).

      If you can make a screenshot of your dialog in designer (not of the preview), we can have a closer look.

      http://www.catb.org/~esr/faqs/smart-questions.html

      1 Reply Last reply
      0
      • R Offline
        R Offline
        raulgd
        wrote on last edited by
        #3

        Maybe it's a design issue (on my part), here's how my app works:

        On Startup, it opens a QDialog created with Designer, the dialog is gonna be a frameless window with a transparent background, that way, the background is a PNG image, so you have a simulated uneven shaped window:
        the main() code goes like this:

        @
        SplashDialog s;
        s.setWindowFlags(Qt::FramelessWindowHint);
        s.setAttribute(Qt::WA_TranslucentBackground);
        s.show();
        @

        Now, the SplashDialog image background is placed with a stylesheet property in a QWidget, because the window background is transparent, so if I put the image in the window background is invisible.
        The thing is that when I start to place my widgets on top of the qwidget that has the background image, the widgets get attached to the widget.
        What way would you recommend I place my background image on the dialog? is placing it in a widget ok? and just settle with the fact that the widgets on top of it will be attached to it? or is there a better way?

        EDIT:
        Sorry, didn't mention why it's important not to have the qwidget as ancestor, it's because all of the other widgets on top of it inherit it's properties, so all of the widgets automatically get the background image as well, and they loose all of the system style.

        Raul Guerrero
        http://jimi.mx

        1 Reply Last reply
        0
        • R Offline
          R Offline
          raulgd
          wrote on last edited by
          #4

          to answer my own post, I changed the CSS like this on QWidget:
          @
          QWidget #myWidget
          {
          background-image: url(:/image.png);
          }
          @
          That way, the property only applies to the widget, so, even though the widgets on top are still children of myWidget, at least they don't inherit the style anymore.

          It would be nice to have a way to change a widgets ancestor from the object Inspector though

          Raul Guerrero
          http://jimi.mx

          1 Reply Last reply
          0
          • T Offline
            T Offline
            tobias.hunger
            wrote on last edited by
            #5

            The parent-child relation is used to clean up the widgets when the dialog is deleted. For that to work all the widgets of the dialog must form some kind of tree. For widgets the relationship also expresses "contained in" (with parent-less widgets being windows).

            I really think that makes sense and see no need to allow for arbitrary parents in widgets.

            1 Reply Last reply
            0
            • R Offline
              R Offline
              raulgd
              wrote on last edited by
              #6

              @Tobias - Well, I'm not saying that there shouldn't be a tree, but it would be nice to control the widget tree graphically the same way you control it programmatically, in code you can choose who's ancestor of who, and in designer it's a lot more inflexible because you can't really do that.

              Also, I've never really used designer before, and I think the GUI designer is really dated, It's so odd to see the background with dots for the window background, and also not having any alignment guides, it feels so VB6

              I guess what I'm about to write maybe belongs somewhere else, but it would be nice to see a more updated editor, sort of like Netbeans swing GUI Builder (formerly matisse) it has all this automatic alignment guides, autoresize based on certain widgets and all other goodies, or also like another product named REALStudio from REALSoftware, those are more modern designers, it would be cool to see a more updated designer instead of a more 80s-90s GUI designer look.

              Besides that, it's really easy to use, it has all a GUI Builder needs, it's really nice, the last stuff I wrote are just suggestions, keep up the good work!

              Thanks!

              Raul Guerrero
              http://jimi.mx

              1 Reply Last reply
              0
              • G Offline
                G Offline
                goetz
                wrote on last edited by
                #7

                You do use layouts in desginer, don't you? They are far more flexible and powerful than anchors (think of a grid layout, or even a form layout that automatically adapts to the style of the OS). Once you have one or more layouts in your widgets, they resize automatically.

                You can find a quick start tutorial "here":http://doc.qt.nokia.com/4.7/designer-quick-start.html and some more infos about layouts in desinger "here":http://doc.qt.nokia.com/4.7/designer-layouts.html

                I once had to use anchors for layouts etc. in Delphi and found it extremely awkward and unintuitive to use.

                The parent-child relationship for widgets directly influences the layout and visibility of the widgets, so that is done using drag'n'drop within the form, not in the object tree.

                http://www.catb.org/~esr/faqs/smart-questions.html

                1 Reply Last reply
                0
                • T Offline
                  T Offline
                  tobias.hunger
                  wrote on last edited by
                  #8

                  Raul: I guess you are not using layouts then: They make the whole guidelines business obsolete. You even get sensible object trees out of designer:-)

                  1 Reply Last reply
                  0
                  • R Offline
                    R Offline
                    raulgd
                    wrote on last edited by
                    #9

                    I do use layouts, but layouts aren't perfect, when you have widgets with a more complex layout than a grid, the layouts don't align as expected, for example, here I'm building a transparent window and a background image to simulate an uneven window, so the layout I'm using for the widgets isn't a grid.

                    But I guess if you guys that are more used to complex layouts, I'll practice more on using them, maybe there are better ways of using them than the way I use them right now, which I'm not that experienced on them.

                    I come from the java world, and the java layouts left a lot to be desired, that's why I prefered aligning the stuff myself, but I'll practice more on Qt layouts, maybe, as you say, are a lot better.

                    Raul Guerrero
                    http://jimi.mx

                    1 Reply Last reply
                    0
                    • G Offline
                      G Offline
                      goetz
                      wrote on last edited by
                      #10

                      Ok, agreed. The standard layouts fit best for rectangular shapes. But all this should be doable for non-regular shapes too. A wild mix of horizontal and vertical box layout does some good tricks, especially when some spacers enter the playground. Maybe you can post an image of a scribble for the dialog somewhere.

                      http://www.catb.org/~esr/faqs/smart-questions.html

                      1 Reply Last reply
                      0
                      • R Offline
                        R Offline
                        raulgd
                        wrote on last edited by
                        #11

                        As you will see on the image, there's gonna be a splashscreen, and the window is gonna have a transparent background and frameless, so it's gonna be sort of like an adobe CS app, that it's splashcreen art kind of "goes off" the square window, so it breaks the square line.

                        The alignment part comes from the program options, you can choose what option to start working with, but the links that are gonna open the window you choose, have to be aligned around the logo, and then each top link has to be left-aligned with the corresponding bottom one, in the image you can see the alignment guides in light blue.

                        I'm thinking more and more apps are gonna start getting more odd alignments because of how people are demanding more visual coolness because of all the RIA hype. Maybe not everyone will need it, and I don't use QtDeclarative for this because of lack of knowledge from my part on how to do the same thing as I do with widgets.

                        Here's the image:

                        !http://www.jimi.com.mx/oddlayout.jpg(image)!

                        Raul Guerrero
                        http://jimi.mx

                        1 Reply Last reply
                        0
                        • T Offline
                          T Offline
                          tobias.hunger
                          wrote on last edited by
                          #12

                          You could write a custom layout for something like that or give Qt Quick a try.

                          1 Reply Last reply
                          0
                          • R Offline
                            R Offline
                            raulgd
                            wrote on last edited by
                            #13

                            I've been meaning to learn Qt Quick but where do I start?

                            Raul Guerrero
                            http://jimi.mx

                            1 Reply Last reply
                            0
                            • A Offline
                              A Offline
                              andre
                              wrote on last edited by
                              #14

                              One place to start would be the video's from the most recent dev days. There was a lot of QML introductions there.

                              1 Reply Last reply
                              0
                              • M Offline
                                M Offline
                                mgran
                                wrote on last edited by
                                #15

                                [quote author="Raul" date="1302092643"]I've been meaning to learn Qt Quick but where do I start? [/quote]

                                Try here: http://developer.qt.nokia.com/wiki/Qt_Quick :)

                                Project Manager - Qt Development Frameworks

                                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