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. Passing QString to function.
Forum Updated to NodeBB v4.3 + New Features

Passing QString to function.

Scheduled Pinned Locked Moved Solved General and Desktop
18 Posts 5 Posters 5.6k Views 3 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.
  • AhtiA Offline
    AhtiA Offline
    Ahti
    wrote on last edited by
    #1

    how to pass QString in the following function ?
    i am getting error saying : "no matching function for call to EyeCare::tr(const QString&)"

    QGroupBox *EyeCare::createBrightnessSettings(const QString name){
    
        QGroupBox *brightnessSettings = new QGroupBox(tr(name));
        ...
    }
    ...
    layout->addWidget(createBrightnessSettings("Brightness Settings"),0,0,Qt::AlignLeft);
    ...
    

    thanks

    K 1 Reply Last reply
    0
    • EddyE Offline
      EddyE Offline
      Eddy
      wrote on last edited by Eddy
      #2

      Hi Ahti,

      If you use

      QGroupBox *brightnessSettings = new QGroupBox(name);
      

      Then everything works?

      the tr functions marks QStrings for translation. Here you use a variable. There is no point in translating variables, they are not visible to the user and don't need to be translated.

      Eddy

      Qt Certified Specialist
      www.edalsolutions.be

      AhtiA 1 Reply Last reply
      0
      • EddyE Eddy

        Hi Ahti,

        If you use

        QGroupBox *brightnessSettings = new QGroupBox(name);
        

        Then everything works?

        the tr functions marks QStrings for translation. Here you use a variable. There is no point in translating variables, they are not visible to the user and don't need to be translated.

        Eddy

        AhtiA Offline
        AhtiA Offline
        Ahti
        wrote on last edited by
        #3

        @Eddy by using just

        QGroupBox *brightnessSettings = new QGroupBox(name);
        

        it throws error : "program has unexpectedly finished"

        1 Reply Last reply
        0
        • EddyE Offline
          EddyE Offline
          Eddy
          wrote on last edited by
          #4

          @Ahti
          Can you debug your program to see where the problem starts?

          Qt Certified Specialist
          www.edalsolutions.be

          1 Reply Last reply
          0
          • AhtiA Ahti

            how to pass QString in the following function ?
            i am getting error saying : "no matching function for call to EyeCare::tr(const QString&)"

            QGroupBox *EyeCare::createBrightnessSettings(const QString name){
            
                QGroupBox *brightnessSettings = new QGroupBox(tr(name));
                ...
            }
            ...
            layout->addWidget(createBrightnessSettings("Brightness Settings"),0,0,Qt::AlignLeft);
            ...
            

            thanks

            K Offline
            K Offline
            koahnig
            wrote on last edited by
            #5

            @Ahti said in Passing QString to function.:

            how to pass QString in the following function ?
            i am getting error saying : "no matching function for call to EyeCare::tr(const QString&)"

            QGroupBox *EyeCare::createBrightnessSettings(const QString name){
            
                QGroupBox *brightnessSettings = new QGroupBox(tr(name));
                ...
            }
            ...
            

            Did you solve your error as listed in your first post?

            The implementation is missing the apersand '&' and therefore you had initally the error message.

            Vote the answer(s) that helped you to solve your issue(s)

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

              Hi,

              It should rather be:

              QGroupBox *EyeCare::createBrightnessSettings(const QString &name) //<< const reference as @koahnig suggested
              {
              
                  QGroupBox *brightnessSettings = new QGroupBox(name);
                  ...
              }
              ...
              layout->addWidget(createBrightnessSettings(tr("Brightness Settings")),0,0,Qt::AlignLeft); // the tr methods are usually put around text that you want to mark for translation.
              ...
              

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

              AhtiA 1 Reply Last reply
              2
              • SGaistS SGaist

                Hi,

                It should rather be:

                QGroupBox *EyeCare::createBrightnessSettings(const QString &name) //<< const reference as @koahnig suggested
                {
                
                    QGroupBox *brightnessSettings = new QGroupBox(name);
                    ...
                }
                ...
                layout->addWidget(createBrightnessSettings(tr("Brightness Settings")),0,0,Qt::AlignLeft); // the tr methods are usually put around text that you want to mark for translation.
                ...
                
                AhtiA Offline
                AhtiA Offline
                Ahti
                wrote on last edited by
                #7

                @SGaist Still not working man
                throwing error "program has unexpectedly finished"
                and when i debug after a while it shows something wrong on this line :

                QGroupBox *brightnessSettings = new QGroupBox(name);
                

                thanks

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

                  What does the stack trace tells you ?

                  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
                  • hskoglundH Offline
                    hskoglundH Offline
                    hskoglund
                    wrote on last edited by
                    #9

                    Hi, also you could try (this is just a guess) to go via a normal QString, like this:

                    {
                        QString name2(name);
                        QGroupBox *brightnessSettings = new QGroupBox(name2);
                        ...
                    }
                    
                    AhtiA 1 Reply Last reply
                    0
                    • hskoglundH hskoglund

                      Hi, also you could try (this is just a guess) to go via a normal QString, like this:

                      {
                          QString name2(name);
                          QGroupBox *brightnessSettings = new QGroupBox(name2);
                          ...
                      }
                      
                      AhtiA Offline
                      AhtiA Offline
                      Ahti
                      wrote on last edited by Ahti
                      #10

                      @SGaist @hskoglund @Eddy

                      here have a look of debug result:
                      https://postimg.org/image/6g1fp20zb/

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

                        Something fishy: settingsBackground = constructFrame(this, settingsBackground, 10, 145, 640, 320);

                        Frankly the code itself looks like its doing pretty strange thing to setup the widget.

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

                        AhtiA 1 Reply Last reply
                        1
                        • SGaistS SGaist

                          Something fishy: settingsBackground = constructFrame(this, settingsBackground, 10, 145, 640, 320);

                          Frankly the code itself looks like its doing pretty strange thing to setup the widget.

                          AhtiA Offline
                          AhtiA Offline
                          Ahti
                          wrote on last edited by Ahti
                          #12

                          @SGaist

                          I don't think anything is fishy with constructFrame(); why would you think that ?

                          constructFrame definition:

                          QFrame* EyeCare::constructFrame(QWidget *parent, QFrame *frameName,
                                                       int x, int y, int w, int h, QString style) {
                          
                              frameName = new QFrame(parent) ;
                              frameName->setGeometry(x,y,w,h);
                              if (!style.isEmpty())
                                  frameName->setStyleSheet(style);
                              return frameName ;
                          }
                          

                          I don't think there is anything wrong with it because i am using it with other places in my code and i have no issue with it.

                          What you think is strange please be specific ?

                          btw this is what i am trying to achieve with the code :

                          https://postimg.org/image/i30xl23g5/

                          1 Reply Last reply
                          0
                          • AhtiA Ahti

                            @SGaist @hskoglund @Eddy

                            here have a look of debug result:
                            https://postimg.org/image/6g1fp20zb/

                            hskoglundH Offline
                            hskoglundH Offline
                            hskoglund
                            wrote on last edited by
                            #13

                            @Ahti Hi, looking at https://postimg.org/image/6g1fp20zb/ it seems that inside createBrightnessSettings you call createBrightnessSettings 2 times (one for "Day Mode" and one for "Night Mode") so that first time there are 2 calls, then 4, then 8, then 16 etc.... When recursive-calling yourself you need some mechanism to stop otherwise the program will crash :-(

                            AhtiA 1 Reply Last reply
                            2
                            • hskoglundH hskoglund

                              @Ahti Hi, looking at https://postimg.org/image/6g1fp20zb/ it seems that inside createBrightnessSettings you call createBrightnessSettings 2 times (one for "Day Mode" and one for "Night Mode") so that first time there are 2 calls, then 4, then 8, then 16 etc.... When recursive-calling yourself you need some mechanism to stop otherwise the program will crash :-(

                              AhtiA Offline
                              AhtiA Offline
                              Ahti
                              wrote on last edited by
                              #14

                              @hskoglund but at the end it has a return statement which would return the "brightnessSettings" QGroupBox pointer this is where stopping mechanism for recursive call happens returning from every call would ultimately bring it out of the createBrightnessSettings() function .

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

                                Then why pass frameName as argument to that function ?

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

                                AhtiA 2 Replies Last reply
                                1
                                • SGaistS SGaist

                                  Then why pass frameName as argument to that function ?

                                  AhtiA Offline
                                  AhtiA Offline
                                  Ahti
                                  wrote on last edited by Ahti
                                  #16

                                  @SGaist I am creating more than one frame that is why i have to pass the name of the frame that i want to create.

                                  like for example :

                                  homeBackground = constructFrame(this,homeBackground,10,145,640,320) ;
                                  settingsBackground = constructFrame(this,settingsBackground,10,145,640,320) ;
                                  topSeperator = constructFrame(contactBackground,topSeperator,5,60,635,2,"background-color:white;") ;
                                  ...
                                  
                                  1 Reply Last reply
                                  0
                                  • SGaistS SGaist

                                    Then why pass frameName as argument to that function ?

                                    AhtiA Offline
                                    AhtiA Offline
                                    Ahti
                                    wrote on last edited by
                                    #17
                                    This post is deleted!
                                    1 Reply Last reply
                                    0
                                    • AhtiA Ahti

                                      @hskoglund but at the end it has a return statement which would return the "brightnessSettings" QGroupBox pointer this is where stopping mechanism for recursive call happens returning from every call would ultimately bring it out of the createBrightnessSettings() function .

                                      hskoglundH Offline
                                      hskoglundH Offline
                                      hskoglund
                                      wrote on last edited by
                                      #18

                                      @Ahti well the recursiveness is still fatal, createBrightnessSettings("Night Mode",...) is never reached, instead createBrightnessSettings("Day Mode"... is calling itself many millions of times then the app crashes because of stack overflow.

                                      1 Reply Last reply
                                      1

                                      • Login

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