I have a widget and inside it are 32 buttons. I need to connect each button's pressed() signal to a slot in order to call a function who's parameters depend on which button I have pressed. Right now I did that by adding 32 slots in the form of on_QPushButtonName_pressed() but thats a lot of slots. I was wondering if there is another way I could do it that is smaller. I have done something similar but I was working with custom widgets so I could just create a new signal in the code of my class but I would like to avoid creating a custom widget for just a single button.
Use the QSignalMapper class. The documentation - http://doc.qt.io/qt-5/qsignalmapper.html - has an example pretty close to what you want.
Another possibility: creating just one slot, calling sender()
and switching on the result.
As Rohan mentioned, QSignalMapper is the recommended solution, since sender() is a bit of a hack. Its advantage is that it's easier to use.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With