首页 > 解决方案 > QMetaObject::connectSlotsByName:on_pbZatwierdz_clicked(QString) 没有匹配信号

问题描述

我想将按钮的 clicked() 信号与将 QString 作为参数的插槽连接起来。我该如何解决?

主要的:

QObject::connect(&first, SIGNAL(newTextEntered(const QString&)), &second, SLOT(on_pbZatwierdz_clicked((const QString&))));

主窗口:

void MainWindow::on_leEdytujKlienta_returnPressed()
{
    emit this->newTextEntered(ui->leEdytujKlienta->text());
}

表格2:

void edytujklienta::on_pbZatwierdz_clicked(const QString &text)
{    
    qDebug() << "Received number ID: " << text ; 
}

//显示你的 .h 和 .cpp :),

edytujklienta.cpp 代码:

   void edytujklienta::onpbZatwierdzclicked(const QString &text)
{    
    qDebug() << "ODEBRANO numer ID: " << text ;
    QString Nazwisko;
    Nazwisko=ui->lineNazwisko->text();
    QSqlQuery updateQuery ;
    updateQuery.prepare("UPDATE tKlient SET NAZWISKO = :newNAZWISKO, IMIE = :newIMIE WHERE ID = :id ");
    updateQuery.bindValue(":newIMIE",Imie);
    updateQuery.exec();   
}

标签: c++qtsignals-slots

解决方案


使用 Qt5 风格的连接语法,并连接到 lambda 而不是插槽。然后 lambda 可以使用您需要的任何调用参数。

出于代码维护的原因,我强烈建议不要使用按名称连接。


推荐阅读