Connecting action to QPushButton and Slots questions



  • I'm making a simple ATM machine application. I need to connect functions that are currently in my Accounts.h file like deposit() to buttons declared in main of my ATM.cpp file. Accounts.h and ATM.cpp are the only two files I currently have.

    I've been trying to connect the actions of deposit(), withdraw(), ect., to their respective buttons. The buttons are in the QWidget ATMWindow.

    Where would I put the public slots? Do I need to make a new header file for my QWidget?



  • I have 2 methods in mind:

    METHOD 1: Signal-Slot way
    In you Accounts.h, the functions that you need should be declared as "public slots".
    @public slots:
    void deposit();
    void withdraw();
    //etc@

    Then in your ATMWindow, use connect()
    @Accounts *accounts=new Account();//just guessing if your class name is "Accounts"
    QOBject::connect(depositbutton,SIGNAL(clicked(),accounts,SLOT(deposit()));
    QOBject::connect(withdrawbutton,SIGNAL(clicked(),accounts,SLOT(withdraw()));@

    METHOD 2: Just a public function
    In you Accounts.h, the functions that you need should be declared as "public".
    @public:
    void deposit();
    void withdraw();
    //etc@

    Suppose you are using .ui file in Qt Creator, just right click onto a button then look for "go to slot" then find "clicked". It will generate a function for you where you can call the functions:

    @void ATMWindows::on_depositbutton_clicked() //just an example... this should be generated by Qt Creator
    {
    accounts->deposit(); //make sure youu have declared accounts in the header file so that it can be accessed globally [in your class]
    }@


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.