Как подключить значение valueChanged из QLineEdit к пользовательскому слоту в Qt
Мне нужно подключить сигнал valueChanged из QLineEdit к пользовательскому слоту программно. Я знаю, как установить соединение с помощью Qt Designer и с помощью графического интерфейса, но я хотел бы сделать это программно, чтобы я мог больше узнать о сигналах и слотах.
Это то, что у меня не работает.
файл.cpp
// constructor
connect(myLineEdit, SIGNAL(valueChanged(static QString)), this, SLOT(customSlot()));
void MainWindow::customSlot()
{
qDebug()<< "Calling Slot";
}
.h файл
private slots:
void customSlot();
Что мне здесь не хватает?
Спасибо
2 ответа
QLineEdit
похоже не имеет valueChanged
сигнал, но textChanged
(полный список поддерживаемых сигналов см. в документации Qt). Вы должны изменить свой connect()
вызов функции тоже. Так должно быть:
connect(myLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(customSlot()));
Если вам нужен дескриптор нового текстового значения в вашем слоте, вы можете определить его как customSlot(const QString &newValue)
вместо этого ваше соединение будет выглядеть так:
connect(myLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(customSlot(const QString &)));
Здесь также с лямбдой, если интересно:
connect(myLineEdit, &QLineEdit::textChanged, [=](QString obj) { customSlot(obj); });