Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Signals and slots or whatever
Qt 6.12 LTS is out! See what's new in the release blog

Signals and slots or whatever

Scheduled Pinned Locked Moved Unsolved General and Desktop
71 Posts 6 Posters 40.0k 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.
  • J Offline
    J Offline
    jrod2much
    wrote on last edited by
    #47

    @VRonin Alright so I found different data to connect to the textBrowser, and after many attempts and much research, I am still unable to do it. Here are update images:
    0_1538477163306_51c1562a-a99c-4069-99b4-e5697211dd24-image.png
    0_1538477337855_ca3e47b9-7c89-4c5b-b74d-aa0b5397747d-image.png
    0_1538476458867_56c78a7d-687e-4960-9dd3-e63237487074-image.png

    0_1538476502705_156732dc-1477-4eb0-af2f-453173d4e892-image.png I don't know the coding lingo, but I' think I found the creation of the render class object or whatever. It is in this Interpret class that is then made an object in the mainwindow
    0_1538476593015_878a794f-1605-47cd-ab3c-4c1d33e8f002-image.png

    I am showing you any pieces of code that could possibly be related to what I am trying to do. Unfortunately, there are no examples, tutorials, or explanations on how to connect to a textBrowser, no matter where I search on the internet. Most tutorials about connections lazily explain elementary connections between buttons and sliders that are preformatted anyway. I would like to give it one more try before changing my direction from the possibilty of a UI that can display data values to just using printf functions and continuing my project. If you see any way you can help me, I would greatly appreciate it.

    1 Reply Last reply
    0
    • jsulmJ Offline
      jsulmJ Offline
      jsulm
      Lifetime Qt Champion
      wrote on last edited by
      #48

      @jrod2much said in Signals and slots or whatever:

      Most tutorials about connections lazily explain elementary connections

      connect() always work the same way no matter what you're connecting to what. You can't expect tutorials for everything.
      What is the problem now?
      It doesn't compile?
      Are your slots in "slots" section and signals in "signals" section in your classes? Are those classes derived from QObject?

      https://forum.qt.io/topic/113070/qt-code-of-conduct

      J 1 Reply Last reply
      2
      • jsulmJ jsulm

        @jrod2much said in Signals and slots or whatever:

        Most tutorials about connections lazily explain elementary connections

        connect() always work the same way no matter what you're connecting to what. You can't expect tutorials for everything.
        What is the problem now?
        It doesn't compile?
        Are your slots in "slots" section and signals in "signals" section in your classes? Are those classes derived from QObject?

        J Offline
        J Offline
        jrod2much
        wrote on last edited by
        #49

        @jsulm Yes connect() always works the same but what I mean by lazy tutorials is that many of the tutorials show how to use preformatted connect()'s. In my case, I have create every aspect of the connection. I don't know what goes in the four arguments of the connect and when I try to use the m_render for the first argument, it does not recognize.

        jsulmJ 1 Reply Last reply
        0
        • J jrod2much

          @jsulm Yes connect() always works the same but what I mean by lazy tutorials is that many of the tutorials show how to use preformatted connect()'s. In my case, I have create every aspect of the connection. I don't know what goes in the four arguments of the connect and when I try to use the m_render for the first argument, it does not recognize.

          jsulmJ Offline
          jsulmJ Offline
          jsulm
          Lifetime Qt Champion
          wrote on last edited by jsulm
          #50

          @jrod2much said in Signals and slots or whatever:

          preformatted connect()

          What is this?
          As I said: it is always the same.
          connect(senderObject, signal, receiverObject, slot);
          There is really nothing special.
          Is Renderer derived from QObject?
          Is m_renderer a pointer?
          Can you please post the error message you get?

          https://forum.qt.io/topic/113070/qt-code-of-conduct

          1 Reply Last reply
          1
          • VRoninV Offline
            VRoninV Offline
            VRonin
            wrote on last edited by
            #51

            in the connect(m_renderer etc, the third argument (this) is of type MainWindow, not QTextBrowser so it can't work, you need to pass m_ui->textBrowser there.

            What's the full error the connect reports?

            "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
            ~Napoleon Bonaparte

            On a crusade to banish setIndexWidget() from the holy land of Qt

            1 Reply Last reply
            3
            • J Offline
              J Offline
              jrod2much
              wrote on last edited by jrod2much
              #52

              @VRonin @jsulm
              0_1538483559136_2853b0c3-e6d0-4996-9bee-96992f6397df-image.png

              jsulmJ 1 Reply Last reply
              0
              • J jrod2much

                @VRonin @jsulm
                0_1538483559136_2853b0c3-e6d0-4996-9bee-96992f6397df-image.png

                jsulmJ Offline
                jsulmJ Offline
                jsulm
                Lifetime Qt Champion
                wrote on last edited by
                #53

                @jrod2much You still did not answer my question: is Renderer derived from QObject? Did you include the header file containing Renderer class definition?

                https://forum.qt.io/topic/113070/qt-code-of-conduct

                J.HilkJ 1 Reply Last reply
                2
                • jsulmJ jsulm

                  @jrod2much You still did not answer my question: is Renderer derived from QObject? Did you include the header file containing Renderer class definition?

                  J.HilkJ Online
                  J.HilkJ Online
                  J.Hilk
                  Moderators
                  wrote on last edited by
                  #54

                  @jsulm according to the error message, I would say m_renderer is not a QObject
                  incomplete type 'Renderer *' to const QObject ....


                  Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                  Q: What's that?
                  A: It's blue light.
                  Q: What does it do?
                  A: It turns blue.

                  1 Reply Last reply
                  2
                  • J Offline
                    J Offline
                    jrod2much
                    wrote on last edited by jrod2much
                    #55

                    @jsulm said in Signals and slots or whatever:

                    @jrod2much You still did not answer my question: is Renderer derived from QObject? Did you include the header file containing Renderer class definition?

                    Should I do that?

                    Update: I included it, now the program runs. However, It is not printing any text on the textBrowser, but atleast I am getting somewhere

                    1 Reply Last reply
                    0
                    • VRoninV VRonin

                      @jrod2much said in Signals and slots or whatever:

                      What should be my next step?

                      Make the interpreter a QObject if it's not already and declare a signal identical to the one in CccModule.
                      Now wherever the interpreter creates the CccModule connect() the 2 signals together

                      The following step is finding out how interpreter gets created (by MainWindow?) it might be tricky as it's in a secondary thread but try and have a look

                      VRoninV Offline
                      VRoninV Offline
                      VRonin
                      wrote on last edited by
                      #56

                      I think you skipped this part:

                      @VRonin said in Signals and slots or whatever:

                      Now wherever the interpreter creates the CccModule connect() the 2 signals together

                      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                      ~Napoleon Bonaparte

                      On a crusade to banish setIndexWidget() from the holy land of Qt

                      J 1 Reply Last reply
                      1
                      • VRoninV VRonin

                        I think you skipped this part:

                        @VRonin said in Signals and slots or whatever:

                        Now wherever the interpreter creates the CccModule connect() the 2 signals together

                        J Offline
                        J Offline
                        jrod2much
                        wrote on last edited by jrod2much
                        #57

                        @VRonin So I have changed where I am trying to get the value from, it is actually from the Renderer class, not the CccModule class anymore.

                        New error

                        QObject::connect: Cannot connect (null)::Rvalues(QString) to QTextBrowser::setText(QString)

                        VRoninV jsulmJ 2 Replies Last reply
                        0
                        • J jrod2much

                          @VRonin So I have changed where I am trying to get the value from, it is actually from the Renderer class, not the CccModule class anymore.

                          New error

                          QObject::connect: Cannot connect (null)::Rvalues(QString) to QTextBrowser::setText(QString)

                          VRoninV Offline
                          VRoninV Offline
                          VRonin
                          wrote on last edited by
                          #58

                          @jrod2much said in Signals and slots or whatever:

                          So I have changed where I am trying to get the value from

                          I see, cool

                          New error

                          Could you use Qt5 connection instead? errors usually are a lot more helpful:
                          connect(m_interpreter->m_renderer,&Renderer::Rvalues,m_ui->textBrowser,&QTextBrowser::setText);

                          "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                          ~Napoleon Bonaparte

                          On a crusade to banish setIndexWidget() from the holy land of Qt

                          1 Reply Last reply
                          2
                          • J Offline
                            J Offline
                            jrod2much
                            wrote on last edited by jrod2much
                            #59

                            @VRonin

                            0_1538488320685_0cf79aa7-0b80-425b-b65a-2d0608dd88f4-image.png

                            15:51:34: Debugging starts
                            (Internal error: pc 0x0 in read in psymtab, but not in symtab.)
                            (Internal error: pc 0x0 in read in psymtab, but not in symtab.)

                            @VRonin said in Signals and slots or whatever:

                            If you remove the connect you get no such error, correct?

                            UPDATE: correct

                            1 Reply Last reply
                            0
                            • VRoninV Offline
                              VRoninV Offline
                              VRonin
                              wrote on last edited by
                              #60

                              If you remove the connect you get no such error, correct?

                              "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                              ~Napoleon Bonaparte

                              On a crusade to banish setIndexWidget() from the holy land of Qt

                              J 1 Reply Last reply
                              0
                              • VRoninV VRonin

                                If you remove the connect you get no such error, correct?

                                J Offline
                                J Offline
                                jrod2much
                                wrote on last edited by
                                #61

                                @VRonin said in Signals and slots or whatever:

                                If you remove the connect you get no such error, correct?

                                correct

                                1 Reply Last reply
                                0
                                • VRoninV Offline
                                  VRoninV Offline
                                  VRonin
                                  wrote on last edited by
                                  #62

                                  1st try, move the connect as the very last line in the function. if that isn't enough then you have to find out where m_interpreter->m_renderer and m_ui->textBrowser are created and connect after they are created

                                  "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                                  ~Napoleon Bonaparte

                                  On a crusade to banish setIndexWidget() from the holy land of Qt

                                  1 Reply Last reply
                                  1
                                  • J jrod2much

                                    @VRonin So I have changed where I am trying to get the value from, it is actually from the Renderer class, not the CccModule class anymore.

                                    New error

                                    QObject::connect: Cannot connect (null)::Rvalues(QString) to QTextBrowser::setText(QString)

                                    jsulmJ Offline
                                    jsulmJ Offline
                                    jsulm
                                    Lifetime Qt Champion
                                    wrote on last edited by
                                    #63

                                    @jrod2much said in Signals and slots or whatever:

                                    QObject::connect: Cannot connect (null)::Rvalues(QString) to QTextBrowser::setText(QString)

                                    You're using a nullptr to connect, this can't work. The sender object was not created.

                                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                                    1 Reply Last reply
                                    0
                                    • J Offline
                                      J Offline
                                      jrod2much
                                      wrote on last edited by
                                      #64

                                      @jsulm Is this what you are talking about:

                                      #include "console.h"
                                      #include "interpreter.h"
                                      #include "chirpmon.h"
                                      #include "dfu.h"
                                      #include "flash.h"
                                      #include "ui_mainwindow.h"
                                      #include "configdialog.h"
                                      #include "dataexport.h"
                                      #include "sleeper.h"
                                      #include "aboutdialog.h"
                                      #include "parameters.h"
                                      #include "paramfile.h"
                                      #include <QTextBrowser>
                                      #include "renderer.h"
                                      
                                      extern ChirpProc c_grabFrame;
                                      
                                      MainWindow::MainWindow(int argc, char *argv[], QWidget *parent) :
                                          QMainWindow(parent),
                                          m_ui(new Ui::MainWindow)
                                      {
                                          QCoreApplication::setOrganizationName(PIXYMON_COMPANY);
                                          QCoreApplication::setApplicationName(PIXYMON_TITLE);
                                      
                                          qRegisterMetaType<Device>("Device");
                                      
                                          m_ui->setupUi(this);
                                          setWindowTitle(PIXYMON_TITLE);
                                      
                                          m_interpreter = NULL;
                                          connect(m_interpreter->m_renderer,&Renderer::Rvalues,m_ui->textBrowser,&QTextBrowser::setText);
                                          m_flash = NULL;
                                          m_renderer = NULL;  //<-------------------------This?
                                          m_pixyConnected = false;
                                          m_pixyDFUConnected = false;
                                          m_configDialog = NULL;
                                          m_fwInstructions = NULL;
                                          m_fwMessage = NULL;
                                          m_versionIncompatibility = false;
                                          m_testCycle = false;
                                          m_waiting = WAIT_NONE;
                                      
                                          parseCommandline(argc, argv);
                                      
                                          m_settings = new QSettings(QSettings::NativeFormat, QSettings::UserScope, PIXYMON_COMPANY, PIXYMON_TITLE);
                                          m_console = new ConsoleWidget(this);
                                          m_video = new VideoWidget(this);
                                          connect(m_video, SIGNAL(mouseLoc(int,int)), this, SLOT(handleMouseLoc(int, int)));
                                      
                                          m_ui->imageLayout->addWidget(m_video);
                                          m_ui->imageLayout->addWidget(m_console);
                                      
                                          // hide console
                                          m_showConsole = m_testCycle;
                                          m_console->setVisible(m_testCycle);
                                          m_ui->actionConsole->setChecked(m_testCycle);
                                      
                                          m_ui->toolBar->addAction(m_ui->actionPlay_Pause);
                                      
                                          m_ui->actionDefault_program->setIcon(QIcon(":/icons/icons/home.png"));
                                          m_ui->toolBar->addAction(m_ui->actionDefault_program);
                                      
                                          m_ui->actionRaw_video->setIcon(QIcon(":/icons/icons/raw.png"));
                                          m_ui->toolBar->addAction(m_ui->actionRaw_video);
                                      
                                          m_ui->actionConfigure->setIcon(QIcon(":/icons/icons/config.png"));
                                          m_ui->toolBar->addAction(m_ui->actionConfigure);
                                      
                                          m_ui->menuProgram->setToolTipsVisible(true);
                                      
                                          m_statusLeft = new QLabel;
                                          m_statusRight = new QLabel;
                                          // give the status a little of a left margin
                                          m_ui->statusBar->setContentsMargins(6, 0, 0, 0);
                                          m_ui->statusBar->addWidget(m_statusLeft);
                                          m_ui->statusBar->addPermanentWidget(m_statusRight);
                                          updateButtons();
                                      
                                          m_parameters.add("Pixy start command", PT_STRING, "",
                                              "The command that is sent to Pixy upon initialization");
                                      
                                          // start looking for devices
                                          m_connect = new ConnectEvent(this);
                                          if (m_connect->getConnected()==NONE)
                                              error("No Pixy devices have been detected.\n");
                                      
                                          //  <---My added expermiental code ------v
                                          //connect(m_renderer,SIGNAL(Rvalues(QString)), m_ui->textBrowser, SLOT(setText(QString)));
                                         // connect(m_interpreter->m_renderer,&Renderer::Rvalues,m_ui->textBrowser,&QTextBrowser::setText);
                                      
                                      }
                                      
                                      1 Reply Last reply
                                      0
                                      • VRoninV Offline
                                        VRoninV Offline
                                        VRonin
                                        wrote on last edited by
                                        #65

                                        ok. stop a second and think.
                                        What are you doing here?

                                        m_interpreter = NULL;
                                        connect(m_interpreter->m_renderer
                                        

                                        "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                                        ~Napoleon Bonaparte

                                        On a crusade to banish setIndexWidget() from the holy land of Qt

                                        J 1 Reply Last reply
                                        5
                                        • VRoninV VRonin

                                          ok. stop a second and think.
                                          What are you doing here?

                                          m_interpreter = NULL;
                                          connect(m_interpreter->m_renderer
                                          
                                          J Offline
                                          J Offline
                                          jrod2much
                                          wrote on last edited by jrod2much
                                          #66

                                          @VRonin said in Signals and slots or whatever:

                                          m_interpreter = NULL;
                                          connect(m_interpreter->m_renderer
                                          

                                          I'm not really sure what this means. This is my interpretation of the code; The application runs without my connect function or any other alteration to the code. So, I would guess it would be a bad idea to create an object where the original Programmers of this code did not. Wouldn't that affect the program? That is my uneducated opinion.

                                          JKSHJ 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
                                          • Unsolved