Thursday, 15 January 2015

c++ - QT slots and signals fail -



c++ - QT slots and signals fail -

hi there got problem signal , slots in qt. in main have created object of mainwindow. in mainwindow.cpp creating object of class(modbus_tcp). creating connection here

void mainwindow::on_connectb_clicked() { modbus_tcp appts; appts.slave(); connect(&appts,signal(msgsended(qstring)),this,slot(msgedit(qstring))); }

between slot declared in mainwindow.cpp/h

public slots: void msgedit(qstring m); void mainwindow::msgedit(qstring m) { ui->sendedit->settext(m); ui->recvedit->settext(m); //qmessagebox::information(0,"bad", "nope nope nope"); }

and signal declared in modbus_tcp.h

signals: void msgsended(qstring);

next emiting signal in modbus_tcp.cpp

emit msgsended("asdasd");

and nil happen

when trying emit in mainwindow.cpp working

any ideas ?

void mainwindow::on_connectb_clicked() { modbus_tcp appts; appts.slave(); connect(&appts,signal(msgsended(qstring)),this,slot(msgedit(qstring))); }

appts created in stack, deleted @ end of slot execution. seek create in heap(try utilize pointer).

void mainwindow::on_connectb_clicked() { modbus_tcp *appts = new modbus_tcp; connect(appts,signal(msgsended(qstring)),this,slot(msgedit(qstring)));//first! appts->slave();//now can phone call }

use pointers, first of connect, , after phone call slave. emit signal in slave, there no connection in time. should connection firstly , after that, able grab signals.

c++ qt signals connect slot

No comments:

Post a Comment