Qml QObject :: connect: No hay tal señal 原因

Puntos a tener en cuenta al conectar señales qml y funciones de ranura

  1. Las funciones de señal y ranura en la función de conexión no deben tomar parámetros formales
QObject::connect(setButton, SIGNAL(qmlbuttonclicked(QVariant)), DB::GetInstance(), SLOT(ConstructAndSetCommmand(QVariant)))  //true

QObject::connect(setButton, SIGNAL(qmlbuttonclicked(QVariant temp1)), DB::GetInstance(), SLOT(ConstructAndSetCommmand(QVariant temp2)))  //false
  1. Para las señales declaradas en qml, el tipo de parámetro debe ser var
signal qmlbuttonclicked(var anObject)
  1. El tipo de parámetro aceptado por la función de ranura de c ++ debe ser Qvariant y debe declararse en las ranuras
public slots:
    static void ConstructAndSetCommmand(QVariant);
  1. La función de ranura hace la operación correspondiente, es necesario averiguar qué tipo está almacenado en el QVariant, y luego sacarlo y operarlo en consecuencia
使用 Qvariant.value<T>() 的方法
QVariantList module_list=module_model.value<QVariantList>();
  1. El resto es verificar si el nombre de la función, el nombre de la señal y el nombre del objeto son incorrectos

Supongo que te gusta

Origin blog.csdn.net/weixin_39139505/article/details/103081316
Recomendado
Clasificación