Search code examples
qtsignalsparameter-passingsignals-slots

Passing a class through a signal/slot setup in Qt


I'm trying to get the information of several of a class' member variables on the receiving end of a slot/signal setup, so I'd like to pass the entire class through. Unfortunately, after the class has been passed, the member variables seem to be empty. Here's some code snippets:

This sets up the signal to pass the class

signals:
    void selected(const ControlIcon *controlIcon);

this is the slot/signal connection

connect(controllerList->serialController, SIGNAL(selected(const ControlIcon*)),
        infoView, SLOT(serialControllerSelected(const ControlIcon*)));

I emit the signal from within the class to be passed

emit selected(this);

Here's the code to call on the class' member data

QLabel *ASCIIStringHolder = new QLabel;
ASCIIStringHolder->setText(controlIcon->m_ASCIIString);

Nothing shows up in the label, and when I set a breakpoint, I can see that there's nothing inside m_ASCIIString.

I looked to make sure that it was being assigned some text in the first place, and that's not the problem. I also tried the signal/slot setup with and without const.

Any help would be appreciated.


Solution

  • The signal can't be declared to be passing a class and then actually pass the child of that class. I changed the signal, slot, and connect() to be SerialController (the child of ControllerIcon), and everything worked fine.