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. About functions and lineEdit
Forum Updated to NodeBB v4.3 + New Features

About functions and lineEdit

Scheduled Pinned Locked Moved General and Desktop
25 Posts 3 Posters 6.9k Views 1 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.
  • sierdzioS Offline
    sierdzioS Offline
    sierdzio
    Moderators
    wrote on last edited by
    #2

    Please wrap your code in '@' tags.

    The place where you use "this" is a function parameter (connect function), which specifies the receiving object for the signal. In your case, you are specifying "this", meaning the object from which you are making the connection. "this" is a C++ keyword.

    Emit keyword does not do anything, it is an empty macro. It's added in Qt just so that the code is easier to read and understand. You mark with it the point where your code emits the signal.

    Yes, int validator is ok.

    The last question: that depends on your use case. Use textChanged() if you want to respond to the change right when it happens ("live" calculation). If you want to make the computation after the user - for example - clicks a button, then place the code in a slot corresponding to that button.

    (Z(:^

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

      Hi,

      Please enclose your code in coding tags (one @ at the beginning and one at the end) It will make it readable.

      1. connect needs to know which object it is connecting. In you case a lineEdit and your custom object. You can also use the overload with only 3 arguments which implies the slots belong to the object calling connect.

      2. Yes it's one way to do it. You can also use a QSpinBox which seems more suited to your needs.

      3. Depends on how you want to react to the new value. Once it's completely entered ? While the use is still typing ? Then you have either textChanged or editingFinished

      Hope it helps

      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
      • sierdzioS Offline
        sierdzioS Offline
        sierdzio
        Moderators
        wrote on last edited by
        #4

        [quote author="SGaist" date="1394138001"]Hi[/quote]

        Hehe, ok, I can see we are working in parallel again :D

        I'll leave the "night shift" to you, I'm going to sleep now. Have fun :)

        (Z(:^

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

          [quote author="sierdzio" date="1394138154"][quote author="SGaist" date="1394138001"]Hi[/quote]

          Hehe, ok, I can see we are working in parallel again :D

          I'll leave the "night shift" to you, I'm going to sleep now. Have fun :)[/quote]

          That's what is called multicore mate ! ^^

          Good night ! :)

          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
          • P Offline
            P Offline
            Project try
            wrote on last edited by
            #6

            I'm sorry about the code guys ^^

            thanks for helping , I just wanted to know about question 3:

            lets say I have an integer x;

            and the user edited the line and I used editingfinshed to wait for the user to press enter , after pressing enter what function do I use so what the user entered " integer " get copied in the variable that I've used so I can do calculations ? and should I use connect here ?

            1 Reply Last reply
            0
            • P Offline
              P Offline
              Project try
              wrote on last edited by
              #7

              I searched and found settext , but it takes strings ? i want to copy it to an int

              1 Reply Last reply
              0
              • P Offline
                P Offline
                Project try
                wrote on last edited by
                #8

                @
                QObject::connect(edit,SIGNAL(editingFinished()),"what to use here ",SLOT());

                @

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

                  Since you are using a QLineEdit you will need to get the string and then convert it to an integer.

                  @
                  QObject::connect(myLineEdit,SIGNAL(editingFinished()), this,SLOT(mySlot()));

                  void MyMainWindow::mySlot()
                  {
                  QString numberText = myLineEdit->text();
                  int number = numberText.toString()
                  //etc...
                  }
                  @

                  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
                  • P Offline
                    P Offline
                    Project try
                    wrote on last edited by
                    #10

                    Thanks buddy , I tried something I hope it will work , the problem is now I need to setlayout , but when I call that function it says :

                    @
                    error: C3861: 'setlayout': identifier not found
                    @

                    and there's only this one I didn't setlayout before and it's a new project

                    these are the headers I'm using until now:

                    #include <QApplication>
                    #include<QLabel>
                    #include<QHBoxLayout>
                    #include<QLineEdit>
                    #include<QIntValidator>
                    #include <QWidget>

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

                      You're welcome

                      You wrote it wrong, it's setLayout

                      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
                      • P Offline
                        P Offline
                        Project try
                        wrote on last edited by
                        #12

                        Same error man :( , even when I write the first two or three letters the function doesn't show , other functions shows like setlocal

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

                          Can you show the code where this setLayout can be found ?

                          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
                          • P Offline
                            P Offline
                            Project try
                            wrote on last edited by
                            #14

                            @
                            #include <QApplication>
                            #include<QLabel>
                            #include<QHBoxLayout>
                            #include<QLineEdit>
                            #include<QIntValidator>
                            #include <QWidget>

                            int sum(int x,int y){
                            return x+y;
                            }

                            int main(int argc, char *argv[])
                            {
                            int x;
                            int y;
                            QApplication a(argc, argv);

                            QLabel *check=new QLabel(QObject::tr("Add numbers:"));
                            
                            QHBoxLayout *left=new QHBoxLayout;
                            
                            left->addWidget(check);
                             QValidator *Valid=new QIntValidator();
                            
                            QLineEdit *edit =new QLineEdit;
                            edit->setMaximumWidth(5);
                            edit->setFixedWidth(5);
                            check->setBuddy(edit);
                            edit->setValidator(Valid);
                            QObject::connect(edit,SIGNAL(editingFinished()),edit,SLOT(setText(x)));
                            QLineEdit *edit1=new QLineEdit;
                            edit1->setMaximumWidth(5);
                            edit1->setFixedWidth(5);
                            check->setBuddy(edit1);
                            edit1->setValidator(Valid);
                            QObject::connect(edit1,SIGNAL(editingFinished()),edit1,SLOT(setText(y)));
                                    left->addWidget(edit);
                            QHBoxLayout *Mainlayout=new QHBoxLayout;
                            Mainlayout->addLayout(left);
                            

                            setLayout(Mainlayout);

                            sum(x,y);

                            return a.exec&#40;&#41;;
                            

                            }

                            @

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

                              That won't do what you want at all.

                              You are calling setLayout in main and not on a widget

                              Also your connection statements are wrong.

                              Please, have a look at some of Qt's example to see how things work

                              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
                              • P Offline
                                P Offline
                                Project try
                                wrote on last edited by
                                #16

                                Well , that's the only way I would learn is by making mistakes :D , that's why I wanted to do it my way before trying what you guys have told me.

                                by the way why can't I call it in main ? should I include something first ?

                                1 Reply Last reply
                                0
                                • P Offline
                                  P Offline
                                  Project try
                                  wrote on last edited by
                                  #17

                                  and could you please tell me where should I call it ?

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

                                    setLayout is a function of QWidget, so you need a QWidget object.

                                    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
                                    • P Offline
                                      P Offline
                                      Project try
                                      wrote on last edited by
                                      #19

                                      what if I made a class and inherited qwidget ? or there's a better way ?

                                      1 Reply Last reply
                                      0
                                      • P Offline
                                        P Offline
                                        Project try
                                        wrote on last edited by
                                        #20

                                        Oh , so I could just create a pointer to that object and use that pointer to set the layout ? and if I wanted to make bigger programs I should just inherit it on my classes ?

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

                                          Subclass QWidget, it's the correct way to go here.

                                          You really should take a look at Qt's demos and examples, that will give you a good ground to build on

                                          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