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. How to really use multiproject ?
Forum Updated to NodeBB v4.3 + New Features

How to really use multiproject ?

Scheduled Pinned Locked Moved Unsolved General and Desktop
25 Posts 8 Posters 2.4k Views 6 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.
  • A Offline
    A Offline
    Anonymous_Banned275
    wrote on last edited by
    #16

    I will back-off a little.
    Can somebody explain (to me ) why the SUBDIRS "directories " AKA independent programs has to be "in sequence "?

    Each program basically follow the Qt "Application" scheme - from TEMPLATE to TARGET.

    So far I have not found how these dependent programs - each one with its own "main" and QApplication "callback / event" loop can run as one program.
    Logically there should be one and only one "main " and its callback / event loop.
    Maybe the idea of independent programs supporting ONE main program is bogus. Perhaps there should be ONE main program supported by libraries , not independent programs. (Similar scheme works perfect in another IDE - BUT it has no GUI nor events support !) .
    Then the whole scheme of SUBDIRS as "independent programs" is wrong.

    JKSHJ 1 Reply Last reply
    0
    • A Anonymous_Banned275

      I will back-off a little.
      Can somebody explain (to me ) why the SUBDIRS "directories " AKA independent programs has to be "in sequence "?

      Each program basically follow the Qt "Application" scheme - from TEMPLATE to TARGET.

      So far I have not found how these dependent programs - each one with its own "main" and QApplication "callback / event" loop can run as one program.
      Logically there should be one and only one "main " and its callback / event loop.
      Maybe the idea of independent programs supporting ONE main program is bogus. Perhaps there should be ONE main program supported by libraries , not independent programs. (Similar scheme works perfect in another IDE - BUT it has no GUI nor events support !) .
      Then the whole scheme of SUBDIRS as "independent programs" is wrong.

      JKSHJ Offline
      JKSHJ Offline
      JKSH
      Moderators
      wrote on last edited by
      #17

      @AnneRanch said in How to really use multiproject ?:

      Logically there should be one and only one "main " and its callback / event loop.
      Maybe the idea of independent programs supporting ONE main program is bogus. Perhaps there should be ONE main program supported by libraries , not independent programs....

      Then the whole scheme of SUBDIRS as "independent programs" is wrong.

      This is correct.

      SUBDIRS is for grouping one or more libraries with one application (or no application)

      I have not found how these dependent programs - each one with its own "main" and QApplication "callback / event" loop can run as one program.

      This is impossible. You cannot have multiple main() and QApplication instances in the same program.

      Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

      A 1 Reply Last reply
      2
      • JKSHJ JKSH

        @AnneRanch said in How to really use multiproject ?:

        Logically there should be one and only one "main " and its callback / event loop.
        Maybe the idea of independent programs supporting ONE main program is bogus. Perhaps there should be ONE main program supported by libraries , not independent programs....

        Then the whole scheme of SUBDIRS as "independent programs" is wrong.

        This is correct.

        SUBDIRS is for grouping one or more libraries with one application (or no application)

        I have not found how these dependent programs - each one with its own "main" and QApplication "callback / event" loop can run as one program.

        This is impossible. You cannot have multiple main() and QApplication instances in the same program.

        A Offline
        A Offline
        Anonymous_Banned275
        wrote on last edited by
        #18

        @JKSH
        So it is back to terminology or semantics.

        "project" as used in Qt terminology, especially in "SUBDIRS" scheme is not necessarily code build as a stand alone functioning application.

        "library" on the other hand is build / complied as a code to be used to support a "project". Library is NOT standalone functioning application.

        With that in mind - SUBDIRS options to "add new project " or add "existing projects " is grossly misleading.

        However, the example "MDI" application APPEARS to combine Qt standard QApplication "app" with a reference to another "QApplication " qapp.

        Unfortunately this software trick is documented nowhere.
        But for sure - "MDI" example source code is nowhere near "SUBDIRS" scheme.

        So for time being I am looking into replacing "MDI" QApplication qapp with QApplication "btscaner_app" ( no "main" event loop ) as used in "MDI" example .

        Does this makes any sense ?

        JKSHJ Pl45m4P 2 Replies Last reply
        0
        • A Anonymous_Banned275

          @JKSH
          So it is back to terminology or semantics.

          "project" as used in Qt terminology, especially in "SUBDIRS" scheme is not necessarily code build as a stand alone functioning application.

          "library" on the other hand is build / complied as a code to be used to support a "project". Library is NOT standalone functioning application.

          With that in mind - SUBDIRS options to "add new project " or add "existing projects " is grossly misleading.

          However, the example "MDI" application APPEARS to combine Qt standard QApplication "app" with a reference to another "QApplication " qapp.

          Unfortunately this software trick is documented nowhere.
          But for sure - "MDI" example source code is nowhere near "SUBDIRS" scheme.

          So for time being I am looking into replacing "MDI" QApplication qapp with QApplication "btscaner_app" ( no "main" event loop ) as used in "MDI" example .

          Does this makes any sense ?

          JKSHJ Offline
          JKSHJ Offline
          JKSH
          Moderators
          wrote on last edited by
          #19

          @AnneRanch said in How to really use multiproject ?:

          "project" as used in Qt terminology, especially in "SUBDIRS" scheme is not necessarily code build as a stand alone functioning application.

          Correct. "Project" is a broad term. For example, you can have an "application project" (which lets you build a standalone functioning application) or a "library project" (which lets you build a library).

          Here are some different types of projects: https://doc.qt.io/qt-5//qmake-common-projects.html

          Library is NOT standalone functioning application.

          Correct. And this is not Qt-specific: The word "library" means something quite specific to programmers, no matter what programming language they use: https://en.wikipedia.org/wiki/Library_(computing)

          • Qt is a collection of libraries
          • Qt Creator is a standalone functioning application

          With that in mind - SUBDIRS options to "add new project " or add "existing projects " is grossly misleading.

          How so? For example, I can add 1 application project and 3 library projects to my SUBDIRS project. What's misleading about that?

          However, the example "MDI" application APPEARS to combine Qt standard QApplication "app" with a reference to another "QApplication " qapp.

          Sorry, I don't understand what you mean. Can you please elaborate?

          Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

          1 Reply Last reply
          2
          • A Anonymous_Banned275

            @JKSH
            So it is back to terminology or semantics.

            "project" as used in Qt terminology, especially in "SUBDIRS" scheme is not necessarily code build as a stand alone functioning application.

            "library" on the other hand is build / complied as a code to be used to support a "project". Library is NOT standalone functioning application.

            With that in mind - SUBDIRS options to "add new project " or add "existing projects " is grossly misleading.

            However, the example "MDI" application APPEARS to combine Qt standard QApplication "app" with a reference to another "QApplication " qapp.

            Unfortunately this software trick is documented nowhere.
            But for sure - "MDI" example source code is nowhere near "SUBDIRS" scheme.

            So for time being I am looking into replacing "MDI" QApplication qapp with QApplication "btscaner_app" ( no "main" event loop ) as used in "MDI" example .

            Does this makes any sense ?

            Pl45m4P Offline
            Pl45m4P Offline
            Pl45m4
            wrote on last edited by
            #20

            @AnneRanch said in How to really use multiproject ?:

            However, the example "MDI" application APPEARS to combine Qt standard QApplication "app" with a reference to another "QApplication " qapp.

            Are you confused because of QApplication and QCoreApplicaton?

                QApplication app(argc, argv);
                QCoreApplication::setApplicationName("MDI Example");
                QCoreApplication::setOrganizationName("QtProject");
                QCoreApplication::setApplicationVersion(QT_VERSION_STR);
            

            (https://code.qt.io/cgit/qt/qtbase.git/tree/examples/widgets/mainwindows/mdi/main.cpp?h=5.15#n61)

            It's the same, just a bit further down in inheritance tree...
            If you look at this, you can see that

            • QApplication inherits
              • QGuiApplication which inherits
                • QCoreApplication

            (bottom to top)

            So it's still the same instance of qApp.


            If debugging is the process of removing software bugs, then programming must be the process of putting them in.

            ~E. W. Dijkstra

            1 Reply Last reply
            1
            • SGaistS Offline
              SGaistS Offline
              SGaist
              Lifetime Qt Champion
              wrote on last edited by
              #21

              @JKSH said in How to really use multiproject ?:

              SUBDIRS is for grouping one or more libraries with one application (or no application)

              Just a small addition, you may as well have several applications built using the SUBDIRS model. They will each be independent application. That is useful when you create a suite of applications working together. Like for example a main application plus some helper tools.

              One example of SUBDIRS project: Qt itself up to Qt 6 before they switched to the cmake build system.

              You have there an example with lots of libraries and executables plus tests.

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

              JKSHJ 1 Reply Last reply
              1
              • A Offline
                A Offline
                Anonymous_Banned275
                wrote on last edited by
                #22

                Yes, I did not realize QApplication is the " lead dog" , did not pay attention to inheritance.
                Here is my "confusion point" :

                // originally last entry Help menu
                QMenu *helpMenu = menuBar()->addMenu(tr("&Help")); //TOK

                // this enables to print "local" dialog / message - no issue here

                QAction *aboutAct = helpMenu->addAction(tr("&About"), this, &MainWindow::about);
                aboutAct->setStatusTip(tr("Show the application's About box"));
                

                //TODO link to other projects ?? HERE ??

                // #define qApp (static_cast<QApplication *>(QCoreApplication::instance()))
                // the above "passes control to "qApp" which actually prints simple text dialog

                // can I use same scheme and in my case pass control to "btscanner" btscanner_App. ?

                *#define btscanner_App (static_cast<QApplication >(QCoreApplication::instance())) ??? so how do I specify btscanner application here ??

                QAction *aboutQtAct =
                helpMenu->addAction(tr("About &Qt (link to other projets?) "), qApp, &QApplication::aboutQt); 
                aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));
                

                //#endif

                Similar post was here :
                https://forum.qt.io/topic/72909/is-about-qt-dialog-html-or-text-content-available-in-qt5-api

                But then they asked HOW to access the Qt about box/ dialog.
                I am asking how to use similar method to pass control from "MDI" to "btscanner" application. in "SUBDIRS" scheme.

                What I am asking is
                **an expiation about the "#define qApp" usage in "MDI" to access "About Qt" application - not the actual access to the "about Qt" .

                JKSHJ 1 Reply Last reply
                0
                • SGaistS SGaist

                  @JKSH said in How to really use multiproject ?:

                  SUBDIRS is for grouping one or more libraries with one application (or no application)

                  Just a small addition, you may as well have several applications built using the SUBDIRS model. They will each be independent application. That is useful when you create a suite of applications working together. Like for example a main application plus some helper tools.

                  One example of SUBDIRS project: Qt itself up to Qt 6 before they switched to the cmake build system.

                  You have there an example with lots of libraries and executables plus tests.

                  JKSHJ Offline
                  JKSHJ Offline
                  JKSH
                  Moderators
                  wrote on last edited by
                  #23

                  @SGaist said in How to really use multiproject ?:

                  @JKSH said in How to really use multiproject ?:

                  SUBDIRS is for grouping one or more libraries with one application (or no application)

                  Just a small addition, you may as well have several applications built using the SUBDIRS model. They will each be independent application. That is useful when you create a suite of applications working together. Like for example a main application plus some helper tools.

                  Right, thanks. You can use a SUBDIRS project to build multiple standalone applications -- but not link them together into a single application.

                  Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

                  1 Reply Last reply
                  1
                  • A Anonymous_Banned275

                    Yes, I did not realize QApplication is the " lead dog" , did not pay attention to inheritance.
                    Here is my "confusion point" :

                    // originally last entry Help menu
                    QMenu *helpMenu = menuBar()->addMenu(tr("&Help")); //TOK

                    // this enables to print "local" dialog / message - no issue here

                    QAction *aboutAct = helpMenu->addAction(tr("&About"), this, &MainWindow::about);
                    aboutAct->setStatusTip(tr("Show the application's About box"));
                    

                    //TODO link to other projects ?? HERE ??

                    // #define qApp (static_cast<QApplication *>(QCoreApplication::instance()))
                    // the above "passes control to "qApp" which actually prints simple text dialog

                    // can I use same scheme and in my case pass control to "btscanner" btscanner_App. ?

                    *#define btscanner_App (static_cast<QApplication >(QCoreApplication::instance())) ??? so how do I specify btscanner application here ??

                    QAction *aboutQtAct =
                    helpMenu->addAction(tr("About &Qt (link to other projets?) "), qApp, &QApplication::aboutQt); 
                    aboutQtAct->setStatusTip(tr("Show the Qt library's About box"));
                    

                    //#endif

                    Similar post was here :
                    https://forum.qt.io/topic/72909/is-about-qt-dialog-html-or-text-content-available-in-qt5-api

                    But then they asked HOW to access the Qt about box/ dialog.
                    I am asking how to use similar method to pass control from "MDI" to "btscanner" application. in "SUBDIRS" scheme.

                    What I am asking is
                    **an expiation about the "#define qApp" usage in "MDI" to access "About Qt" application - not the actual access to the "about Qt" .

                    JKSHJ Offline
                    JKSHJ Offline
                    JKSH
                    Moderators
                    wrote on last edited by
                    #24

                    @AnneRanch said in How to really use multiproject ?:
                    // #define qApp (static_cast<QApplication *>(QCoreApplication::instance()))

                    // the above "passes control to "qApp" which actually prints simple text dialog

                    This is wrong. The above shows you definition of qApp. qApp simply gives you a pointer to your program's QApplication object.

                    Here is one way to use the pointer:

                    QApplication *myProgram = qApp;
                    myProgram->quit();
                    

                    // can I use same scheme and in my case pass control to "btscanner" btscanner_App. ?

                    *#define btscanner_App (static_cast<QApplication >(QCoreApplication::instance())) ???

                    No.

                    You cannot use a #define or a pointer to "link to" other standalone applications. For that, you need to use some form of Inter-Process Communication (IPC).

                    Qt Doc Search for browsers: forum.qt.io/topic/35616/web-browser-extension-for-improved-doc-searches

                    A 1 Reply Last reply
                    2
                    • JKSHJ JKSH

                      @AnneRanch said in How to really use multiproject ?:
                      // #define qApp (static_cast<QApplication *>(QCoreApplication::instance()))

                      // the above "passes control to "qApp" which actually prints simple text dialog

                      This is wrong. The above shows you definition of qApp. qApp simply gives you a pointer to your program's QApplication object.

                      Here is one way to use the pointer:

                      QApplication *myProgram = qApp;
                      myProgram->quit();
                      

                      // can I use same scheme and in my case pass control to "btscanner" btscanner_App. ?

                      *#define btscanner_App (static_cast<QApplication >(QCoreApplication::instance())) ???

                      No.

                      You cannot use a #define or a pointer to "link to" other standalone applications. For that, you need to use some form of Inter-Process Communication (IPC).

                      A Offline
                      A Offline
                      Anonymous_Banned275
                      wrote on last edited by Anonymous_Banned275
                      #25

                      @JKSH said in How to really use multiproject ?:

                      @AnneRanch said in How to really use multiproject ?:
                      // #define qApp (static_cast<QApplication *>(QCoreApplication::instance()))

                      // the above "passes control to "qApp" which actually prints simple text dialog

                      This is wrong. The above shows you definition of qApp. qApp simply gives you a pointer to your program's QApplication object.

                      Here is one way to use the pointer:

                      QApplication *myProgram = qApp;
                      myProgram->quit();
                      

                      // can I use same scheme and in my case pass control to "btscanner" btscanner_App. ?

                      *#define btscanner_App (static_cast<QApplication >(QCoreApplication::instance())) ???

                      No.

                      You cannot use a #define or a pointer to "link to" other standalone applications. For that, you need to use some form of Inter-Process Communication (IPC).

                      The define functions/ works in MDI example and eventually "runs" (addAction) application "about Qt".

                      I am trying to "trace" and understand "addAction" which seems to be similar to "connect" . BUT no UI ! I do not see why I cannot use same scheme to run my application - "btscanner" as "MDI" menu option.

                      I am still working on linking SUDIRS "projects" as "applications".

                      aboutQtAct =
                      helpMenu->addAction(tr("About &Qt (orignal link to project About Qt ) "),
                                          qApp, &QApplication::aboutQt);
                      
                      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