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. QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?
Forum Updated to NodeBB v4.3 + New Features

QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?

Scheduled Pinned Locked Moved Unsolved General and Desktop
opencvqapplicationqwidget
30 Posts 8 Posters 13.2k Views 4 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.
  • R R-P-H

    @kshegunov said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

    @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

    This problem only occured after updating QT. Previously I was able to use imshow() inside of a console application without any errors.

    Assuming opencv uses the Qt backend then you have depended on an undocumented behavior. Fixing your code would be a place to start - use QApplication.

    QApplication only works with a GUI project.

    kshegunovK Offline
    kshegunovK Offline
    kshegunov
    Moderators
    wrote on last edited by
    #11

    @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

    QApplication only works with a GUI project.

    I'll bite. How are windows supposed to be created if you're not running X?

    Read and abide by the Qt Code of Conduct

    R 1 Reply Last reply
    0
    • kshegunovK kshegunov

      @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

      QApplication only works with a GUI project.

      I'll bite. How are windows supposed to be created if you're not running X?

      R Offline
      R Offline
      R-P-H
      wrote on last edited by
      #12

      @kshegunov said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

      @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

      QApplication only works with a GUI project.

      I'll bite. How are windows supposed to be created if you're not running X?

      Well Visual Studio has no problem doing it. I have made countless win32 console applications inside of Visual Studio (where the only output is a terminal window) and imshow() works perfectly.

      It's not like I'm trying to open the image inside a Qt GUI window. It's an OpenCV image window that should open separately. As I said, there is no question that it was working before.

      kshegunovK 1 Reply Last reply
      0
      • R R-P-H

        @kshegunov said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

        @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

        QApplication only works with a GUI project.

        I'll bite. How are windows supposed to be created if you're not running X?

        Well Visual Studio has no problem doing it. I have made countless win32 console applications inside of Visual Studio (where the only output is a terminal window) and imshow() works perfectly.

        It's not like I'm trying to open the image inside a Qt GUI window. It's an OpenCV image window that should open separately. As I said, there is no question that it was working before.

        kshegunovK Offline
        kshegunovK Offline
        kshegunov
        Moderators
        wrote on last edited by
        #13

        @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

        It's not like I'm trying to open the image inside a Qt GUI window.

        Well apparently you are.

        It's an OpenCV image window that should open separately.

        Which I suspect uses Qt as a backend and it rightfully complains.

        As I said, there is no question that it was working before.

        This doesn't mean anything if you don't follow the rules. QWidget goes with QApplication. To that end what's the problem of using QApplication and still use the console for input and output?

        Read and abide by the Qt Code of Conduct

        R 1 Reply Last reply
        0
        • kshegunovK kshegunov

          @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

          It's not like I'm trying to open the image inside a Qt GUI window.

          Well apparently you are.

          It's an OpenCV image window that should open separately.

          Which I suspect uses Qt as a backend and it rightfully complains.

          As I said, there is no question that it was working before.

          This doesn't mean anything if you don't follow the rules. QWidget goes with QApplication. To that end what's the problem of using QApplication and still use the console for input and output?

          R Offline
          R Offline
          R-P-H
          wrote on last edited by
          #14

          @kshegunov said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

          @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

          It's not like I'm trying to open the image inside a Qt GUI window.

          Well apparently you are.

          It's an OpenCV image window that should open separately.

          Which I suspect uses Qt as a backend and it rightfully complains.

          As I said, there is no question that it was working before.

          This doesn't mean anything if you don't follow the rules. QWidget goes with QApplication. To that end what's the problem of using QApplication and still use the console for input and output?

          The traditional terminal window is suppressed when using a GUI project and I have no need for a GUI window of any kind which gets created by default.

          kshegunovK 1 Reply Last reply
          0
          • mranger90M Offline
            mranger90M Offline
            mranger90
            wrote on last edited by mranger90
            #15

            I've just confirmed that this will work on my system, Qt 5.10.0, MSVC 2017, OpenCV 3.1.0 (?), so it's not a matter of QCoreApplication vs QApplication.

            using namespace cv;
            using namespace std;
            
            int main(int argc, char *argv[])
            {
                QCoreApplication a(argc, argv);
            
                Mat image;
            
                image = imread("c:\\tmp\\triangle_red.png", CV_LOAD_IMAGE_COLOR);
                imshow("Frame", image);
            
                return a.exec();
            }
            
            R 1 Reply Last reply
            0
            • R R-P-H

              @kshegunov said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

              @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

              It's not like I'm trying to open the image inside a Qt GUI window.

              Well apparently you are.

              It's an OpenCV image window that should open separately.

              Which I suspect uses Qt as a backend and it rightfully complains.

              As I said, there is no question that it was working before.

              This doesn't mean anything if you don't follow the rules. QWidget goes with QApplication. To that end what's the problem of using QApplication and still use the console for input and output?

              The traditional terminal window is suppressed when using a GUI project and I have no need for a GUI window of any kind which gets created by default.

              kshegunovK Offline
              kshegunovK Offline
              kshegunov
              Moderators
              wrote on last edited by
              #16

              @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

              The traditional terminal window is suppressed when using a GUI project and I have no need for a GUI window of any kind which gets created by default.

              I didn't say to change your project type. I just said to replace QCoreApplication with QApplication.

              Read and abide by the Qt Code of Conduct

              R 1 Reply Last reply
              0
              • mranger90M mranger90

                I've just confirmed that this will work on my system, Qt 5.10.0, MSVC 2017, OpenCV 3.1.0 (?), so it's not a matter of QCoreApplication vs QApplication.

                using namespace cv;
                using namespace std;
                
                int main(int argc, char *argv[])
                {
                    QCoreApplication a(argc, argv);
                
                    Mat image;
                
                    image = imread("c:\\tmp\\triangle_red.png", CV_LOAD_IMAGE_COLOR);
                    imshow("Frame", image);
                
                    return a.exec();
                }
                
                R Offline
                R Offline
                R-P-H
                wrote on last edited by
                #17

                @mranger90 said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                I've just confirmed that this will work on my system, Qt 5.10.0, MSVC 2017, OpenCV 3.1.0 (?), so it's not a matter of QCoreApplication vs QApplication.

                using namespace cv;
                using namespace std;
                
                int main(int argc, char *argv[])
                {
                    QCoreApplication a(argc, argv);
                
                    Mat image;
                
                    image = imread("c:\\tmp\\triangle_red.png", CV_LOAD_IMAGE_COLOR);
                    imshow("Frame", image);
                
                    return a.exec();
                }
                

                Thanks for confirming. As I suspected, there is some other underlying problem on my system. Either from an update or from adding a 2nd compiler kit.

                1 Reply Last reply
                0
                • kshegunovK kshegunov

                  @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                  The traditional terminal window is suppressed when using a GUI project and I have no need for a GUI window of any kind which gets created by default.

                  I didn't say to change your project type. I just said to replace QCoreApplication with QApplication.

                  R Offline
                  R Offline
                  R-P-H
                  wrote on last edited by
                  #18

                  @kshegunov said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                  @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                  The traditional terminal window is suppressed when using a GUI project and I have no need for a GUI window of any kind which gets created by default.

                  I didn't say to change your project type. I just said to replace QCoreApplication with QApplication.

                  Sorry, I didn't realise you meant just changing that. Changing it gives the error that it's not found.

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

                    You need to add QT += widgets to your .pro file to use QApplication.

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

                    R 1 Reply Last reply
                    2
                    • R R-P-H

                      @kshegunov said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                      @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                      The traditional terminal window is suppressed when using a GUI project and I have no need for a GUI window of any kind which gets created by default.

                      I didn't say to change your project type. I just said to replace QCoreApplication with QApplication.

                      Sorry, I didn't realise you meant just changing that. Changing it gives the error that it's not found.

                      kshegunovK Offline
                      kshegunovK Offline
                      kshegunov
                      Moderators
                      wrote on last edited by kshegunov
                      #20

                      @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                      Changing it gives the error that it's not found.

                      Can you show the project file (*.pro)? I suspect you did not add QT = core gui widgets to it.

                      Read and abide by the Qt Code of Conduct

                      1 Reply Last reply
                      2
                      • R Offline
                        R Offline
                        R-P-H
                        wrote on last edited by
                        #21

                        I will check the .pro file again and post back. However, I never used to modify anything in it before (besides linking the OpenCV library) and it was working fine like that at some stage.

                        1 Reply Last reply
                        0
                        • SGaistS SGaist

                          You need to add QT += widgets to your .pro file to use QApplication.

                          R Offline
                          R Offline
                          R-P-H
                          wrote on last edited by
                          #22

                          @SGaist said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                          You need to add QT += widgets to your .pro file to use QApplication.

                          @kshegunov said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                          @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                          Changing it gives the error that it's not found.

                          Can you show the project file (*.pro)? I suspect you did not add QT = core gui widgets to it.

                          QT -= gui
                          
                          CONFIG += c++11 console
                          CONFIG -= app_bundle
                          
                          QT += widgets
                          
                          DEFINES += QT_DEPRECATED_WARNINGS
                          
                          SOURCES += \
                                  main.cpp
                          

                          If I add either QT += widgets or QT = core gui widgets to the .pro file and replace QCoreApplication with QApplication it works fine. It will not work with QCoreApplication however.

                          kshegunovK 1 Reply Last reply
                          0
                          • R R-P-H

                            @SGaist said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                            You need to add QT += widgets to your .pro file to use QApplication.

                            @kshegunov said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                            @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                            Changing it gives the error that it's not found.

                            Can you show the project file (*.pro)? I suspect you did not add QT = core gui widgets to it.

                            QT -= gui
                            
                            CONFIG += c++11 console
                            CONFIG -= app_bundle
                            
                            QT += widgets
                            
                            DEFINES += QT_DEPRECATED_WARNINGS
                            
                            SOURCES += \
                                    main.cpp
                            

                            If I add either QT += widgets or QT = core gui widgets to the .pro file and replace QCoreApplication with QApplication it works fine. It will not work with QCoreApplication however.

                            kshegunovK Offline
                            kshegunovK Offline
                            kshegunov
                            Moderators
                            wrote on last edited by
                            #23

                            @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                            It will not work with QCoreApplication however.

                            QCoreApplication does not perform the needed steps to initialize the runtime for creating widgets. So yes it shouldn't be possible to create widgets with QCoreApplication; if it is, then you're using an undocumented behavior that's internal to the library, and it can stop working at any time without warning or crash. Warnings from the Qt library should be treated as errors in the user code.

                            Read and abide by the Qt Code of Conduct

                            R 1 Reply Last reply
                            0
                            • kshegunovK kshegunov

                              @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                              It will not work with QCoreApplication however.

                              QCoreApplication does not perform the needed steps to initialize the runtime for creating widgets. So yes it shouldn't be possible to create widgets with QCoreApplication; if it is, then you're using an undocumented behavior that's internal to the library, and it can stop working at any time without warning or crash. Warnings from the Qt library should be treated as errors in the user code.

                              R Offline
                              R Offline
                              R-P-H
                              wrote on last edited by
                              #24

                              @kshegunov said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                              @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                              It will not work with QCoreApplication however.

                              QCoreApplication does not perform the needed steps to initialize the runtime for creating widgets. So yes it shouldn't be possible to create widgets with QCoreApplication; if it is, then you're using an undocumented behavior that's internal to the library, and it can stop working at any time without warning or crash. Warnings from the Qt library should be treated as errors in the user code.

                              Alright thanks, at least I know how to get it to work now although I still find it strange that it was working before without having to use QApplication.

                              In terms of using QCoreApplication I was referring to @mranger90 post below:

                              @mranger90 said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                              I've just confirmed that this will work on my system, Qt 5.10.0, MSVC 2017, OpenCV 3.1.0 (?), so it's not a matter of QCoreApplication vs QApplication.

                              where he confirmed that it does work with QCoreApplication. Strange.

                              sierdzioS 1 Reply Last reply
                              0
                              • R R-P-H

                                @kshegunov said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                                @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                                It will not work with QCoreApplication however.

                                QCoreApplication does not perform the needed steps to initialize the runtime for creating widgets. So yes it shouldn't be possible to create widgets with QCoreApplication; if it is, then you're using an undocumented behavior that's internal to the library, and it can stop working at any time without warning or crash. Warnings from the Qt library should be treated as errors in the user code.

                                Alright thanks, at least I know how to get it to work now although I still find it strange that it was working before without having to use QApplication.

                                In terms of using QCoreApplication I was referring to @mranger90 post below:

                                @mranger90 said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                                I've just confirmed that this will work on my system, Qt 5.10.0, MSVC 2017, OpenCV 3.1.0 (?), so it's not a matter of QCoreApplication vs QApplication.

                                where he confirmed that it does work with QCoreApplication. Strange.

                                sierdzioS Offline
                                sierdzioS Offline
                                sierdzio
                                Moderators
                                wrote on last edited by sierdzio
                                #25

                                @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                                Alright thanks, at least I know how to get it to work now although I still find it strange that it was working before without having to use QApplication.

                                You may want to rise this issue with OpenCV developers - looks like it is some change on their side. The documentation for imshow() does not mention any GUI config requirements.

                                And if it worked before it may be a regression.

                                (Z(:^

                                kshegunovK 1 Reply Last reply
                                0
                                • sierdzioS sierdzio

                                  @R-P-H said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                                  Alright thanks, at least I know how to get it to work now although I still find it strange that it was working before without having to use QApplication.

                                  You may want to rise this issue with OpenCV developers - looks like it is some change on their side. The documentation for imshow() does not mention any GUI config requirements.

                                  And if it worked before it may be a regression.

                                  kshegunovK Offline
                                  kshegunovK Offline
                                  kshegunov
                                  Moderators
                                  wrote on last edited by kshegunov
                                  #26

                                  @sierdzio said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                                  The documentation for imshow() does not mention any GUI config requirements.

                                  It mentions that opencv will have a backend, and this is specified when building as well (--with-qt option), thus Qt requirements propagate through to opencv.

                                  And if it worked before it may be a regression.

                                  I doubt it. I continue to claim that creating a widget, which is what apparently imshow does, is not supported with QCoreApplication, never was and never will, regardless of whether it worked before, now or in the future.

                                  where he confirmed that it does work with QCoreApplication.

                                  Before applying the patch update 5.10.1.

                                  Read and abide by the Qt Code of Conduct

                                  sierdzioS 1 Reply Last reply
                                  0
                                  • kshegunovK kshegunov

                                    @sierdzio said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                                    The documentation for imshow() does not mention any GUI config requirements.

                                    It mentions that opencv will have a backend, and this is specified when building as well (--with-qt option), thus Qt requirements propagate through to opencv.

                                    And if it worked before it may be a regression.

                                    I doubt it. I continue to claim that creating a widget, which is what apparently imshow does, is not supported with QCoreApplication, never was and never will, regardless of whether it worked before, now or in the future.

                                    where he confirmed that it does work with QCoreApplication.

                                    Before applying the patch update 5.10.1.

                                    sierdzioS Offline
                                    sierdzioS Offline
                                    sierdzio
                                    Moderators
                                    wrote on last edited by
                                    #27

                                    @kshegunov said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                                    It mentions that opencv will have a backend, and this is specified when building as well (--with-qt option), thus Qt requirements propagate through to opencv.

                                    Is Qt the only supported backend? If yes, then indeed requirements do propagate. If no, then it may be the case that OP is using Qt for his console app, but OpenCV uses other framework to construct the window.

                                    Anyway, I don't know OpenCV so I'm only speculating.

                                    (Z(:^

                                    kshegunovK SGaistS 2 Replies Last reply
                                    0
                                    • sierdzioS sierdzio

                                      @kshegunov said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                                      It mentions that opencv will have a backend, and this is specified when building as well (--with-qt option), thus Qt requirements propagate through to opencv.

                                      Is Qt the only supported backend? If yes, then indeed requirements do propagate. If no, then it may be the case that OP is using Qt for his console app, but OpenCV uses other framework to construct the window.

                                      Anyway, I don't know OpenCV so I'm only speculating.

                                      kshegunovK Offline
                                      kshegunovK Offline
                                      kshegunov
                                      Moderators
                                      wrote on last edited by
                                      #28

                                      @sierdzio said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                                      Is Qt the only supported backend?

                                      This I don't know, I don't know or use opencv as well. To be honest OpenCV's documentation's a bit vague and somewhat suspicious on the matter.

                                      OpenCV uses other framework to construct the window.

                                      This conflicts with the code snippet and the runtime error the OP gets ... and the fix. Apparently opencv in that case uses Qt to create the widget for display.

                                      Read and abide by the Qt Code of Conduct

                                      1 Reply Last reply
                                      0
                                      • sierdzioS Offline
                                        sierdzioS Offline
                                        sierdzio
                                        Moderators
                                        wrote on last edited by
                                        #29

                                        Yep, you're right.

                                        (Z(:^

                                        1 Reply Last reply
                                        0
                                        • sierdzioS sierdzio

                                          @kshegunov said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                                          It mentions that opencv will have a backend, and this is specified when building as well (--with-qt option), thus Qt requirements propagate through to opencv.

                                          Is Qt the only supported backend? If yes, then indeed requirements do propagate. If no, then it may be the case that OP is using Qt for his console app, but OpenCV uses other framework to construct the window.

                                          Anyway, I don't know OpenCV so I'm only speculating.

                                          SGaistS Offline
                                          SGaistS Offline
                                          SGaist
                                          Lifetime Qt Champion
                                          wrote on last edited by
                                          #30

                                          @sierdzio said in QWidget: Cannot create a QWidget without QApplication - OpenCV imshow() 2.4.13 ?:

                                          Is Qt the only supported backend? If yes, then indeed requirements do propagate.

                                          No, it has been added later on. It's maybe even the latest that has been implemented.

                                          AFAIK, what the OP is hitting here, is that OpenCV doesn't have an implementation for imgshow for iOS. It would require to either use Qt to show the result of what he's doing or native stuff.

                                          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

                                          • Login

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