Qml QObject::connect: No such signal 原因

连接qml信号和槽函数要注意的点

  1. connect 函数中的信号和槽函数不应该带形式参数
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. 在 qml 中声明的信号,参数类型应该用 var
signal qmlbuttonclicked(var anObject)
  1. c++ 槽函数接受的参数类型应该为 Qvariant ,且应该声明到到 slots中
public slots:
    static void ConstructAndSetCommmand(QVariant);
  1. 槽函数做相对应的操作,要弄清楚QVariant 中存的是什么类型,在相对应取出来操作
使用 Qvariant.value<T>() 的方法
QVariantList module_list=module_model.value<QVariantList>();
  1. 其余就是检查函数名和信号名和objectname是否写错了

猜你喜欢

转载自blog.csdn.net/weixin_39139505/article/details/103081316
QML