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.
  • 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 Online
                hskoglundH Online
                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 Online
                        hskoglundH Online
                        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 Online
                                  hskoglundH Online
                                  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