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. I need some exercises for each chapter
Qt 6.11 is out! See what's new in the release blog

I need some exercises for each chapter

Scheduled Pinned Locked Moved Unsolved General and Desktop
32 Posts 5 Posters 32.8k 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.
  • tomyT Offline
    tomyT Offline
    tomy
    wrote on last edited by tomy
    #1

    According to the advice of some the nice and professional guys of this forum, I started to read the book C++ GUI Programming using Qt-4 2nd Edition as the entrance way to the world of Qt.

    OK, I started to read the book and I'm now about to begin chapter 3. I have followed the codes and forms of designer for each example in the book and have run them correctly on my Windows machine so far. But the book has some defect; it doesn't provide any drill of exercises!
    Without exercises, I cannot be sure I've learnt the contents correctly. And can't convince myself that I will be able to write a real application throughout passing the book.

    What I have seen in the other technical books is that each chapter includes some drill and exercises and the end of itself. This is what I need.

    What is/are your suggestion(s) please?

    K 1 Reply Last reply
    0
    • ? Offline
      ? Offline
      A Former User
      wrote on last edited by
      #2

      Hi! Here is your first exercise: Make a desktop calculator like this:

      :-)

      tomyT 1 Reply Last reply
      3
      • tomyT tomy

        According to the advice of some the nice and professional guys of this forum, I started to read the book C++ GUI Programming using Qt-4 2nd Edition as the entrance way to the world of Qt.

        OK, I started to read the book and I'm now about to begin chapter 3. I have followed the codes and forms of designer for each example in the book and have run them correctly on my Windows machine so far. But the book has some defect; it doesn't provide any drill of exercises!
        Without exercises, I cannot be sure I've learnt the contents correctly. And can't convince myself that I will be able to write a real application throughout passing the book.

        What I have seen in the other technical books is that each chapter includes some drill and exercises and the end of itself. This is what I need.

        What is/are your suggestion(s) please?

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

        @tomy

        I guess you have to live with what is available. Since there is no really big change from Qt 4 to Qt 5, there is no Qt 5 book available. Therefore, someone recommended a book describing details for Qt 4. In the past people used examples either from the book directly or the official Qt examples for getting experience with the programming.

        Therefore, you can use Qt 5 examples or Qt 4 examples and the book you have as a reference.

        The examples are typically quite detailed and for a lot of people enough to learn Qt. A book is merely another method to deepen some details respectively to have way of description.

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

        1 Reply Last reply
        3
        • ? A Former User

          Hi! Here is your first exercise: Make a desktop calculator like this:

          :-)

          tomyT Offline
          tomyT Offline
          tomy
          wrote on last edited by tomy
          #4

          @Wieland
          Thank you for your suggestion but isn't this too advanced for a novice that has just learned the first two-chapter of that book (page 58 of the book)?
          If not, OK, I'm interested in it, but may you guide me on the process until end?

          Since it was the first practical example (out of the book) for me, I designed a form by Qt Designer using Dialog Without Buttons template. And I designed the form in its basic style by putting only some widgets as follows:

          alt text

          Then I wrote a calculator.h file like this:

          #ifndef CALCULATOR_H
          #define CALCULATOR_H
          
          #include <QDialog>
          #include "ui_calculator.h"
          
          class Calculator : public QDialog, public Ui::Calculator
          {
             Q_OBJECT
          public:
             Calculator(QWidget* parent = 0);
          };
          
          #endif // CALCULATOR_H
          

          Then, a calculator.cpp this way:

          #include <QtWidgets>
          #include "calculator.h"
          
          Calculator::Calculator(QWidget *parent)
              : QDialog(parent)
          {
              setupUi(this);
          }
          

          And finally the main.cpp this way:

          #include <QApplication>
          #include "calculator.h"
          int main(int argc, char* argv[])
          {
              QApplication app(argc, argv);
              Calculator* dialog = new Calculator;
              dialog -> show();
              return app.exec();
          }
          

          Please note that this kind of exercise is new for me as a newcomer to Qt! So I thought it was better to develop the app step-by-step.

          I used qmake and run the code but got these two errors:

          1- C:\Users\Me\Documents\Qt\Calculator\calculator.h:8: error: expected class-name before '{' token
          {
          ^
          2- C:\Users\Me\Documents\Qt\Calculator\calculator.cpp:7: error: 'setupUi' was not declared in this scope
          setupUi(this);
          ^

          And as the final question of this reply! Would what I did be the same as yours if you were me to have this exercise please?

          jsulmJ 1 Reply Last reply
          0
          • tomyT tomy

            @Wieland
            Thank you for your suggestion but isn't this too advanced for a novice that has just learned the first two-chapter of that book (page 58 of the book)?
            If not, OK, I'm interested in it, but may you guide me on the process until end?

            Since it was the first practical example (out of the book) for me, I designed a form by Qt Designer using Dialog Without Buttons template. And I designed the form in its basic style by putting only some widgets as follows:

            alt text

            Then I wrote a calculator.h file like this:

            #ifndef CALCULATOR_H
            #define CALCULATOR_H
            
            #include <QDialog>
            #include "ui_calculator.h"
            
            class Calculator : public QDialog, public Ui::Calculator
            {
               Q_OBJECT
            public:
               Calculator(QWidget* parent = 0);
            };
            
            #endif // CALCULATOR_H
            

            Then, a calculator.cpp this way:

            #include <QtWidgets>
            #include "calculator.h"
            
            Calculator::Calculator(QWidget *parent)
                : QDialog(parent)
            {
                setupUi(this);
            }
            

            And finally the main.cpp this way:

            #include <QApplication>
            #include "calculator.h"
            int main(int argc, char* argv[])
            {
                QApplication app(argc, argv);
                Calculator* dialog = new Calculator;
                dialog -> show();
                return app.exec();
            }
            

            Please note that this kind of exercise is new for me as a newcomer to Qt! So I thought it was better to develop the app step-by-step.

            I used qmake and run the code but got these two errors:

            1- C:\Users\Me\Documents\Qt\Calculator\calculator.h:8: error: expected class-name before '{' token
            {
            ^
            2- C:\Users\Me\Documents\Qt\Calculator\calculator.cpp:7: error: 'setupUi' was not declared in this scope
            setupUi(this);
            ^

            And as the final question of this reply! Would what I did be the same as yours if you were me to have this exercise please?

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

            @tomy You should not derive your class from Ui::Calculator, instead add a pointer to your class:

            class Calculator : public QDialog
            {
               Q_OBJECT
            public:
               Calculator(QWidget* parent = 0);
            private:
                Ui::Calculator *ui;
            };
            

            You should create a form via "New file or project/Qt designer Form Class" and check how it works. This way it is easier to get started.

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

            tomyT 1 Reply Last reply
            3
            • jsulmJ jsulm

              @tomy You should not derive your class from Ui::Calculator, instead add a pointer to your class:

              class Calculator : public QDialog
              {
                 Q_OBJECT
              public:
                 Calculator(QWidget* parent = 0);
              private:
                  Ui::Calculator *ui;
              };
              

              You should create a form via "New file or project/Qt designer Form Class" and check how it works. This way it is easier to get started.

              tomyT Offline
              tomyT Offline
              tomy
              wrote on last edited by
              #6

              @jsulm said in I need some exercises for each chapter:

              @tomy You should not derive your class from Ui::Calculator, instead add a pointer to your class:

              Thanks for your reply but what I wrote was according to the method of examples of the book!

              class Calculator : public QDialog
              {
                 Q_OBJECT
              public:
                 Calculator(QWidget* parent = 0);
              private:
                  Ui::Calculator *ui;
              };
              

              You should create a form via "New file or project/Qt designer Form Class" and check how it works. This way it is easier to get started.

              OK, I re-start from there this time, but how to get it worked?

              jsulmJ 1 Reply Last reply
              0
              • tomyT tomy

                @jsulm said in I need some exercises for each chapter:

                @tomy You should not derive your class from Ui::Calculator, instead add a pointer to your class:

                Thanks for your reply but what I wrote was according to the method of examples of the book!

                class Calculator : public QDialog
                {
                   Q_OBJECT
                public:
                   Calculator(QWidget* parent = 0);
                private:
                    Ui::Calculator *ui;
                };
                

                You should create a form via "New file or project/Qt designer Form Class" and check how it works. This way it is easier to get started.

                OK, I re-start from there this time, but how to get it worked?

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

                @tomy Can you show the content of ui_calculator.h?

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

                tomyT 1 Reply Last reply
                1
                • jsulmJ jsulm

                  @tomy Can you show the content of ui_calculator.h?

                  tomyT Offline
                  tomyT Offline
                  tomy
                  wrote on last edited by
                  #8

                  @jsulm said in I need some exercises for each chapter:

                  ui_calculator.h

                  Yes, that's it:

                  /********************************************************************************
                  ** Form generated from reading UI file 'calculator.ui'
                  **
                  ** Created by: Qt User Interface Compiler version 5.5.1
                  **
                  ** WARNING! All changes made in this file will be lost when recompiling UI file!
                  ********************************************************************************/
                  
                  #ifndef UI_CALCULATOR_H
                  #define UI_CALCULATOR_H
                  
                  #include <QtCore/QVariant>
                  #include <QtWidgets/QAction>
                  #include <QtWidgets/QApplication>
                  #include <QtWidgets/QButtonGroup>
                  #include <QtWidgets/QDialog>
                  #include <QtWidgets/QHeaderView>
                  #include <QtWidgets/QLineEdit>
                  #include <QtWidgets/QPushButton>
                  
                  QT_BEGIN_NAMESPACE
                  
                  class Ui_Dialog
                  {
                  public:
                      QLineEdit *lineEdit;
                      QPushButton *oneButton;
                      QPushButton *twoButton;
                      QPushButton *equalButton;
                      QPushButton *quitButton;
                      QPushButton *plusButton;
                      QPushButton *menusButton;
                  
                      void setupUi(QDialog *Dialog)
                      {
                          if (Dialog->objectName().isEmpty())
                              Dialog->setObjectName(QStringLiteral("Dialog"));
                          Dialog->resize(400, 300);
                          lineEdit = new QLineEdit(Dialog);
                          lineEdit->setObjectName(QStringLiteral("lineEdit"));
                          lineEdit->setGeometry(QRect(220, 100, 113, 20));
                          oneButton = new QPushButton(Dialog);
                          oneButton->setObjectName(QStringLiteral("oneButton"));
                          oneButton->setGeometry(QRect(40, 90, 75, 23));
                          twoButton = new QPushButton(Dialog);
                          twoButton->setObjectName(QStringLiteral("twoButton"));
                          twoButton->setGeometry(QRect(40, 160, 75, 23));
                          equalButton = new QPushButton(Dialog);
                          equalButton->setObjectName(QStringLiteral("equalButton"));
                          equalButton->setGeometry(QRect(240, 130, 75, 23));
                          quitButton = new QPushButton(Dialog);
                          quitButton->setObjectName(QStringLiteral("quitButton"));
                          quitButton->setGeometry(QRect(240, 190, 75, 23));
                          plusButton = new QPushButton(Dialog);
                          plusButton->setObjectName(QStringLiteral("plusButton"));
                          plusButton->setGeometry(QRect(160, 130, 31, 21));
                          menusButton = new QPushButton(Dialog);
                          menusButton->setObjectName(QStringLiteral("menusButton"));
                          menusButton->setGeometry(QRect(120, 130, 31, 21));
                  
                          retranslateUi(Dialog);
                          QObject::connect(equalButton, SIGNAL(clicked()), Dialog, SLOT(accept()));
                          QObject::connect(quitButton, SIGNAL(clicked()), Dialog, SLOT(reject()));
                          QObject::connect(oneButton, SIGNAL(clicked()), lineEdit, SLOT(paste()));
                          QObject::connect(menusButton, SIGNAL(clicked()), lineEdit, SLOT(paste()));
                          QObject::connect(twoButton, SIGNAL(clicked()), lineEdit, SLOT(paste()));
                          QObject::connect(plusButton, SIGNAL(clicked()), lineEdit, SLOT(paste()));
                  
                          QMetaObject::connectSlotsByName(Dialog);
                      } // setupUi
                  
                      void retranslateUi(QDialog *Dialog)
                      {
                          Dialog->setWindowTitle(QApplication::translate("Dialog", "Calculator", 0));
                          oneButton->setText(QApplication::translate("Dialog", "1", 0));
                          twoButton->setText(QApplication::translate("Dialog", "2", 0));
                          equalButton->setText(QApplication::translate("Dialog", "=", 0));
                          quitButton->setText(QApplication::translate("Dialog", "Quit", 0));
                          plusButton->setText(QApplication::translate("Dialog", "+", 0));
                          menusButton->setText(QApplication::translate("Dialog", "-", 0));
                      } // retranslateUi
                  
                  };
                  
                  namespace Ui {
                      class Dialog: public Ui_Dialog {};
                  } // namespace Ui
                  
                  QT_END_NAMESPACE
                  
                  #endif // UI_CALCULATOR_H
                  
                  1 Reply Last reply
                  0
                  • tomyT Offline
                    tomyT Offline
                    tomy
                    wrote on last edited by
                    #9

                    Thank you guys. Apparently I will get no help here. I pose the issue on another thread.

                    jsulmJ 1 Reply Last reply
                    0
                    • tomyT tomy

                      Thank you guys. Apparently I will get no help here. I pose the issue on another thread.

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

                      @tomy The name of your UI class is Dialog not Calculator, so change to:

                      class Calculator : public QDialog, public Ui::Dialog
                      

                      see here from ui_calculator.h:

                      namespace Ui {
                          class Dialog: public Ui_Dialog {};
                      }
                      

                      "Apparently I will get no help here" - you should be more patient. People here are volunteers.

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

                      tomyT 1 Reply Last reply
                      1
                      • jsulmJ jsulm

                        @tomy The name of your UI class is Dialog not Calculator, so change to:

                        class Calculator : public QDialog, public Ui::Dialog
                        

                        see here from ui_calculator.h:

                        namespace Ui {
                            class Dialog: public Ui_Dialog {};
                        }
                        

                        "Apparently I will get no help here" - you should be more patient. People here are volunteers.

                        tomyT Offline
                        tomyT Offline
                        tomy
                        wrote on last edited by tomy
                        #11

                        @jsulm
                        Yeah, you are right. Thank you for the answer. :)

                        On the process of developing the app step-by-step, I made these changes.
                        The .uifile:

                        alt text

                        My main.cpp:

                        #include <QApplication>
                        #include <QDialog>

                        #include "ui_Calculator.h"

                        int main(int argc, char* argv[])
                        {
                            QApplication app(argc, argv);
                        
                            Ui::Calculator ui;
                            QDialog* dialog = new QDialog;
                            ui.setupUi(dialog);
                            dialog -> show();
                        
                            return app.exec();
                        }
                        

                        The .h file:

                        #ifndef CALCULATOR_H
                        #define CALCULATOR_H
                        
                        #include<QDialog>
                        #include "ui_Calculator.h"
                        
                        class Calculator : public QDialog, public Ui::Calculator
                        {
                            Q_OBJECT
                        
                        public:
                            Calculator(QWidget* parent = 0);
                        private slots:
                           void on_lineEdit_textChanged();
                        };
                        
                        #endif // CALCULATOR_H
                        

                        The .cpp file:

                        #include <QtWidgets>
                        #include "calculator.h"
                        
                        Calculator::Calculator(QWidget *parent)
                            :QDialog(parent)
                        {
                            setupUi(this);
                        
                            connect(oneButton,SIGNAL(clicked(bool)), lineEdit, SLOT(setText("1")));
                            connect(twoButton,SIGNAL(clicked(bool)), lineEdit, SLOT(setText("2")));
                            connect(addButton,SIGNAL(clicked(bool)), lineEdit, SLOT(setText("+")));
                        }
                        
                        void Calculator::on_lineEdit_textChanged() { // I will add some code here
                        }
                        

                        My problems:
                        The program runs without errors but there is a red line under each lines of the connect.
                        And when I run the app and click on 1, 2 or + button, they will not be shown in lineEdit!
                        What are the reasons please?

                        1 Reply Last reply
                        0
                        • mrjjM Offline
                          mrjjM Offline
                          mrjj
                          Lifetime Qt Champion
                          wrote on last edited by
                          #12

                          Hi
                          The reason it do not work is that you say

                          connect(twoButton,SIGNAL(clicked(bool)), lineEdit, SLOT(setText("2")));

                          The signal should go to a slot with same signature, meaning it should take same parameters
                          and you cannot give it "fixed" ones like "2" as it would need to store it for later then and it cannot.
                          so
                          connect(twoButton,SIGNAL(clicked(bool)), this/"Calculator"/, SLOT(myslot(bool)));

                          in myslot could do

                          void Calculator::myslot(bool) {
                          lineEdit->setText("2");
                          }

                          1 Reply Last reply
                          2
                          • tomyT Offline
                            tomyT Offline
                            tomy
                            wrote on last edited by tomy
                            #13

                            Thanks but it didn't work!

                            I even wanted to use the myslot function in a better way, like this:

                            #include <QtWidgets>
                            #include "calculator.h"
                            
                            Calculator::Calculator(QWidget *parent)
                                :QDialog(parent)
                            {
                                setupUi(this);
                            
                                connect(oneButton,SIGNAL(clicked(bool)), lineEdit, SLOT(myslot("1")));
                                connect(twoButton,SIGNAL(clicked(bool)), lineEdit, SLOT(myslot("2")));
                                connect(addButton,SIGNAL(clicked(bool)), lineEdit, SLOT(myslot("+")));
                            }
                            
                            void Calculator::on_lineEdit_textChanged() {// I will add some code here
                            }
                            
                            void Calculator::myslot(const QString& str){
                                lineEdit -> setText(str);
                            }
                            

                            But this one too didn't work. That is, when I run the app, clicking the 1, 2, + write nothing in the lineEdit.

                            PS: In the Calculator.h:

                            ...
                            private slots:
                               void on_lineEdit_textChanged();
                               void myslot(const QString&);
                            };
                            

                            PS2: The red lines under the connects exist still!

                            1 Reply Last reply
                            0
                            • mrjjM Offline
                              mrjjM Offline
                              mrjj
                              Lifetime Qt Champion
                              wrote on last edited by mrjj
                              #14
                              • PS2: The red lines under the connects exist still!

                              Well
                              connect(oneButton,SIGNAL(clicked(bool)), lineEdit, SLOT(myslot("1")));

                              Cannot work. Its not valid and will never work.
                              You cannot use it like that. "1" is not used, not valid and it do not work like this.
                              please read
                              http://doc.qt.io/qt-5/signalsandslots.html

                              Please note:
                              connect return true and false , so please do

                              qDebug () << "one:" << connect(oneButton,SIGNAL(clicked(bool)), lineEdit, SLOT(setText("1")));

                              You will see it says "one:false" and wont accept it.

                              You might want to look into
                              http://doc.qt.io/qt-5/qsignalmapper.html#details

                              1 Reply Last reply
                              1
                              • tomyT Offline
                                tomyT Offline
                                tomy
                                wrote on last edited by
                                #15

                                I read the first link until "Advanced Signal & Slot ..." part but couldn't find the reason. According to C++ conventions what I wrote seems quite right. And if you think it's not in Qt, speak about the reason please.

                                connect(oneButton,SIGNAL(clicked(bool)), lineEdit, SLOT(myslot(bool)));
                                

                                &

                                void Calculator::myslot(){
                                    lineEdit -> setText("1");
                                }
                                

                                also show nothing in lineEdit!

                                jsulmJ 1 Reply Last reply
                                0
                                • mrjjM Offline
                                  mrjjM Offline
                                  mrjj
                                  Lifetime Qt Champion
                                  wrote on last edited by mrjj
                                  #16

                                  Hi

                                  • According to C++ conventions what I wrote seems quite right:

                                  connect(oneButton,SIGNAL(clicked(bool)), lineEdit, SLOT(setText("1")));
                                  This is wrong for the SLOT macro.

                                  The new code you show is correct.
                                  connect(oneButton,SIGNAL(clicked(bool)), lineEdit, SLOT(myslot(bool))); << no "1" just the type

                                  void Calculator::myslot(bool){
                                  lineEdit -> setText("1"); // correct. for normal Qt , it would be ui->lineEdit->setText.
                                  }

                                  1 Reply Last reply
                                  0
                                  • tomyT tomy

                                    I read the first link until "Advanced Signal & Slot ..." part but couldn't find the reason. According to C++ conventions what I wrote seems quite right. And if you think it's not in Qt, speak about the reason please.

                                    connect(oneButton,SIGNAL(clicked(bool)), lineEdit, SLOT(myslot(bool)));
                                    

                                    &

                                    void Calculator::myslot(){
                                        lineEdit -> setText("1");
                                    }
                                    

                                    also show nothing in lineEdit!

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

                                    @tomy You should check what connect(...) returns. My guess is that the connection fails because in the connect you have:

                                    SLOT(myslot(bool))
                                    

                                    but your slot does not have any parameter:

                                    void Calculator::myslot()
                                    

                                    So, connect(...) cannot find slot myslot(bool)

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

                                    tomyT 1 Reply Last reply
                                    3
                                    • jsulmJ jsulm

                                      @tomy You should check what connect(...) returns. My guess is that the connection fails because in the connect you have:

                                      SLOT(myslot(bool))
                                      

                                      but your slot does not have any parameter:

                                      void Calculator::myslot()
                                      

                                      So, connect(...) cannot find slot myslot(bool)

                                      tomyT Offline
                                      tomyT Offline
                                      tomy
                                      wrote on last edited by tomy
                                      #18

                                      Thanks to all.
                                      @jsulm
                                      So apparently you disagree with mrjj. I write what he says but the code shows nothing. I think your assumption is correct because myslot() has no parameters.

                                      Now the question is this: How to connect the buttons (1, 2 & +) to a slot so that, that slot prints out the values of these buttons onto the lineEdit please?

                                      Based on what I'd learned form C++ I thought the code below would work for that purpose:

                                      in the Calculator.h:

                                      ...
                                      private slots:
                                         void myslot(const QString&);
                                      };
                                      

                                      And in Calculator.cpp:

                                      ...
                                      connect(oneButton,SIGNAL(clicked(bool)), lineEdit, SLOT(myslot("1")));
                                       connect(twoButton,SIGNAL(clicked(bool)), lineEdit, SLOT(myslot("2")));
                                       connect(addButton,SIGNAL(clicked(bool)), lineEdit, SLOT(myslot("+")));
                                      }
                                      
                                      void Calculator::myslot(const QString& str){
                                       lineEdit -> setText(str);
                                      }
                                      

                                      But this does not work. I have a good experience in C++ but I'm a novice in Qt.
                                      Now what would be your solution for that purpose please?

                                      jsulmJ 1 Reply Last reply
                                      0
                                      • tomyT tomy

                                        Thanks to all.
                                        @jsulm
                                        So apparently you disagree with mrjj. I write what he says but the code shows nothing. I think your assumption is correct because myslot() has no parameters.

                                        Now the question is this: How to connect the buttons (1, 2 & +) to a slot so that, that slot prints out the values of these buttons onto the lineEdit please?

                                        Based on what I'd learned form C++ I thought the code below would work for that purpose:

                                        in the Calculator.h:

                                        ...
                                        private slots:
                                           void myslot(const QString&);
                                        };
                                        

                                        And in Calculator.cpp:

                                        ...
                                        connect(oneButton,SIGNAL(clicked(bool)), lineEdit, SLOT(myslot("1")));
                                         connect(twoButton,SIGNAL(clicked(bool)), lineEdit, SLOT(myslot("2")));
                                         connect(addButton,SIGNAL(clicked(bool)), lineEdit, SLOT(myslot("+")));
                                        }
                                        
                                        void Calculator::myslot(const QString& str){
                                         lineEdit -> setText(str);
                                        }
                                        

                                        But this does not work. I have a good experience in C++ but I'm a novice in Qt.
                                        Now what would be your solution for that purpose please?

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

                                        @tomy Where did I disagree with @mrjj?
                                        You should read more carefully what I wrote.
                                        The problem with your code is that you provide a wrong slot signature in connect. Again:

                                        SLOT(myslot(bool))
                                        

                                        there is no such slot! Your slot has this signature (no bool parameter):

                                        void Calculator::myslot()
                                        

                                        So, either change

                                        SLOT(myslot(bool))
                                        to
                                        SLOT(myslot())
                                        

                                        or

                                        void Calculator::myslot()
                                        to
                                        void Calculator::myslot(bool)
                                        

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

                                        tomyT 1 Reply Last reply
                                        1
                                        • jsulmJ jsulm

                                          @tomy Where did I disagree with @mrjj?
                                          You should read more carefully what I wrote.
                                          The problem with your code is that you provide a wrong slot signature in connect. Again:

                                          SLOT(myslot(bool))
                                          

                                          there is no such slot! Your slot has this signature (no bool parameter):

                                          void Calculator::myslot()
                                          

                                          So, either change

                                          SLOT(myslot(bool))
                                          to
                                          SLOT(myslot())
                                          

                                          or

                                          void Calculator::myslot()
                                          to
                                          void Calculator::myslot(bool)
                                          
                                          tomyT Offline
                                          tomyT Offline
                                          tomy
                                          wrote on last edited by
                                          #20

                                          @jsulm

                                          OK & thanks a bunch but still it doesn't work!

                                          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