建站公司 深圳,三星网上商城退款,做学校法人年度报告的网站,网站编辑工具背景
qt信号和槽之间的参数传递默认只能传递qt内部已有的类型#xff0c;例如QString等#xff0c;若我们自定义类型作为参数时#xff0c;虽然编译不会报错#xff0c;但运行时会提示connect无效#xff0c;无法识别自定义的类。
此时需要我们将自定义类进行注册#…背景
qt信号和槽之间的参数传递默认只能传递qt内部已有的类型例如QString等若我们自定义类型作为参数时虽然编译不会报错但运行时会提示connect无效无法识别自定义的类。
此时需要我们将自定义类进行注册之后connect才可以使用
自定义类型并注册
//自定义类型
Struct MyTestSt{int x{0};int y{0};
}/*为信号和槽声明自定义类该声明一般在类声明之后被声明的类需要提供公共默认构造函数、公共复制构造函数和公共析构函数*/
//1、声明一个新的元类型该宏会使QMetaType知道该类型声明之后就可以使用QVariant调用该类
Q_DECLARE_METATYPE(MyTestSt);//2、若想要声明的类可以在信号和槽中使用还需要注册该类后面括号保持为空否则就是相当于定义别名
static int id_my_struct qRegisterMetaTypeMyTestStMyTestSt();//3、之后就可以定义带有自定义参数的信号和槽函数
signals:void test_signal_show(const MyTestSt)