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. Is there way to use QT Designer UI forms so you get direct access to the form widgets in your program?
Forum Updated to NodeBB v4.3 + New Features

Is there way to use QT Designer UI forms so you get direct access to the form widgets in your program?

Scheduled Pinned Locked Moved Unsolved General and Desktop
16 Posts 3 Posters 3.6k Views 2 Watching
  • 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.
  • C Offline
    C Offline
    Crag_Hack
    wrote on 13 May 2016, 20:06 last edited by
    #1

    I'm having trouble finding a way to use multiple UI forms in one program so that I get direct access to the widgets in the forms. Direct access would make it much easier to implement my backend and connect it the frontend form files. As it is now I have to use public modification methods to change widgets in the forms and also intermediate signals and slots to communicate between the form's widgets and the code in my backend class. It would be much easier to just change the widgets directly and connect them directly to slots in my backend class. Can something like this even be done? Thanks

    1 Reply Last reply
    0
    • S Offline
      S Offline
      SGaist
      Lifetime Qt Champion
      wrote on 13 May 2016, 20:29 last edited by
      #2

      Hi,

      Yes it might be done but it's the first step to tight coupling and maintenance nightmare (you don't want either for them).

      How are you implementing your backend ?

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • C Offline
        C Offline
        Crag_Hack
        wrote on 13 May 2016, 21:09 last edited by
        #3

        I just created a QT Creator project with .cpp/.h. Then for the forms I added QT Designer Form Classes for each one. It's just a nightmare to have to do everything without direct access. Choose your nightmare perhaps? :) Any ideas to make things easier?

        1 Reply Last reply
        0
        • S Offline
          S Offline
          SGaist
          Lifetime Qt Champion
          wrote on 13 May 2016, 21:54 last edited by
          #4

          That's why I asked about the backend implementation ;)

          Your widgets should be responsible for connecting to the backend so one way to do that is to add a setupBackend method to them and in there do all the connection needed. Doing so you have access directly to said widget internal details thus if you modify it, you only have to change code within that widget. This keeps your code clean and easy to maintain.

          Interested in AI ? www.idiap.ch
          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          0
          • C Offline
            C Offline
            Crag_Hack
            wrote on 14 May 2016, 00:09 last edited by
            #5

            You're talking about my form top level widgets right? So I just add the method to the form class? How do I connect signals and slots between the form and the backend then? Also curious about your mention of the possibility of direct access in the first reply - can you elaborate a little?
            Thanks again

            1 Reply Last reply
            0
            • S Offline
              S Offline
              SGaist
              Lifetime Qt Champion
              wrote on 14 May 2016, 19:37 last edited by
              #6

              I mean any widgets you build that would need a connection to your backend.

              You do the connections in that method i.e.:

              void MyCoolWidget::setupBackend(MyCoolBackend *backend)
              {
                  connect(backend, &MyCoolBackend::stringBasedSignal, ui->statusLabel, &QLabel::setText);
                  // etc.
              }
              

              That way all the code stays in MyCoolWidget and if you change that class e.g. you replace the QLabel by a QLineEdit, you only have to modify setupBackend. No need to hunt every line where you could have done a connection between MyCoolWidget and MyCoolBackend.

              You can give access to the ui variable from your widgets. Again, I very strongly advice to not do such a thing.

              Interested in AI ? www.idiap.ch
              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

              1 Reply Last reply
              0
              • C Offline
                C Offline
                Crag_Hack
                wrote on 15 May 2016, 19:07 last edited by
                #7

                What if I have to go the other way around? - click a button on a widget and do some backend stuff. Also as you probably figured out I'm a newbie to all this stuff. I have a background in data structures and basic programming and inheritance etc... - I'm basically an intermediate level programmer. Can you recommend any books or tutorials to help me out with this scenario of backend vs fronted and ui forms specifcally QT? Thanks :)

                1 Reply Last reply
                0
                • S Offline
                  S Offline
                  SGaist
                  Lifetime Qt Champion
                  wrote on 15 May 2016, 20:58 last edited by
                  #8

                  Same principle:

                  void MyCoolWidget::setupBackend(MyCoolBackend *backend)
                  {
                      connect(backend, &MyCoolBackend::stringBasedSignal, ui->statusLabel, &QLabel::setText);
                      connect(ui->startButton, &QPushButton::clicked, backend, &MyCoolBackend::igniteToaster);
                      // etc.
                  }
                  

                  This book might be of interest. Look for the parts about the Façade pattern.

                  Interested in AI ? www.idiap.ch
                  Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                  1 Reply Last reply
                  1
                  • C Offline
                    C Offline
                    Crag_Hack
                    wrote on 16 May 2016, 05:40 last edited by
                    #9

                    If I were to read one QT book... which would you suggest? :) The same? Perhaps just the Facade pattern then another book? I'll stop bugging you now ...

                    M 1 Reply Last reply 16 May 2016, 08:13
                    0
                    • C Crag_Hack
                      16 May 2016, 05:40

                      If I were to read one QT book... which would you suggest? :) The same? Perhaps just the Facade pattern then another book? I'll stop bugging you now ...

                      M Offline
                      M Offline
                      mrjj
                      Lifetime Qt Champion
                      wrote on 16 May 2016, 08:13 last edited by
                      #10

                      @Crag_Hack
                      Hi
                      When i started with Qt, i like to browse around in this one
                      http://www.bogotobogo.com/cplusplus/files/c-gui-programming-with-qt-4-2ndedition.pdf
                      I find it goes well with Qt docs to learn about different classes and ways to structure the app.

                      1 Reply Last reply
                      0
                      • C Offline
                        C Offline
                        Crag_Hack
                        wrote on 18 May 2016, 20:54 last edited by
                        #11

                        Do either of those books cover how to make graphical renditions of widgets like special cool looking buttons and windows etc? Thanks. That's all folks!

                        1 Reply Last reply
                        0
                        • S Offline
                          S Offline
                          SGaist
                          Lifetime Qt Champion
                          wrote on 18 May 2016, 21:56 last edited by
                          #12

                          What kind of special cool looking buttons do you have in mind ?

                          Interested in AI ? www.idiap.ch
                          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                          1 Reply Last reply
                          0
                          • C Offline
                            C Offline
                            Crag_Hack
                            wrote on 19 May 2016, 05:47 last edited by
                            #13

                            These are a good example... just general graphic design for guis.
                            samsung ssd magician
                            mozy

                            1 Reply Last reply
                            0
                            • C Offline
                              C Offline
                              Crag_Hack
                              wrote on 19 May 2016, 05:52 last edited by
                              #14

                              It does appear deceptively complicated to me initially but upon second look actually looks kinda simple :) toughest part being developing an eye for such things

                              1 Reply Last reply
                              0
                              • S Offline
                                S Offline
                                SGaist
                                Lifetime Qt Champion
                                wrote on 19 May 2016, 21:21 last edited by
                                #15

                                For the first one I'd recommend going with QtQuick, that will be easier to build. The second can be accomplished with widgets with some styling but again, you'll likely be faster with QtQuick to do it.

                                Interested in AI ? www.idiap.ch
                                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                                1 Reply Last reply
                                0
                                • C Offline
                                  C Offline
                                  Crag_Hack
                                  wrote on 19 May 2016, 23:46 last edited by Crag_Hack
                                  #16

                                  I'd rather not use QT Quick unless it's necessary because I'm not familiar with it. Maybe I should bite the bullet and learn it... With widgets though do those books teach you how to do gradients / style sheets / icons and graphics etc so you can make great looking programs? Also if QT Quick is super easier and more effective can I integrate with my C++ backend?

                                  1 Reply Last reply
                                  0

                                  2/16

                                  13 May 2016, 20:29

                                  14 unread
                                  • Login

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