I need to connect the valueChanged signal from QLineEdit to a custom slot programatically. I know how to do the connection by using Qt Designer and doing the connection with graphical interface but I would like to do it programmatically so I can learn more about the Signals and Slots.
This is what I have that doesn't work.
.cpp file
// constructor
connect(myLineEdit, SIGNAL(valueChanged(static QString)), this, SLOT(customSlot()));
void MainWindow::customSlot()
{
qDebug()<< "Calling Slot";
}
.h file
private slots:
void customSlot();
What am I missing here?
Thanks
To connect the signal to the slot, we use QObject::connect(). There are several ways to connect signal and slots. The first is to use function pointers: connect(sender, &QObject::destroyed, this, &MyObject::objectDestroyed);
To begin connecting objects, enter the signals and slots editing mode by opening the Edit menu and selecting Edit Signals/Slots, or by pressing the F4 key. All widgets and layouts on the form can be connected together. However, spacers just provide spacing hints to layouts, so they cannot be connected to other objects.
If several slots are connected to one signal, the slots will be executed one after the other, in the order they have been connected, when the signal is emitted. Signals are automatically generated by the moc and must not be implemented in the . cpp file. They can never have return types (i.e.
QLineEdit
does not seem to have valueChanged
signal, but textChanged
(refer to the Qt documentation for complete list of supported signals).
You need to change your connect()
function call too. It should be:
connect(myLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(customSlot()));
If you need the handle the new text value in your slot, you can define it as customSlot(const QString &newValue)
instead, so your connection will look like:
connect(myLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(customSlot(const QString &)));
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