查看完整版本: [-- qt 信号发送自定义数据 --]

QTCN开发网 -> Qt基础编程 -> qt 信号发送自定义数据 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

zoemolly 2018-05-18 22:33

qt 信号发送自定义数据

class user
{
     private:
    QString strName;
    QStirng  strPassword;
}
User 类如上
Q_DECLARE_METATYPE(User);
已经声明过了
qRegisterMetaType<User>("User");
在connect 之前也注册过了。
在不同的窗口都需要传递User类,怎么注册? 要注册很多次吗? 在什么地方注册?connect之前就可以, 还是必须在构造函数里面注册?

目前我遇到的问题是 我在一个单例类里发送信号 SINGAL(User),在窗口里 始终收不到信号 ,明天再试试 不知道哪里出问题了?



zoemolly 2018-05-18 22:35
已经经常这么用,不知道为啥现在不行了 - -!

zoemolly 2018-05-18 22:35
还有就是 我如果用User* 指针当参数,也需要注册对吧?

zoemolly 2018-05-19 10:43
刚才试了试,发送 User* 参数 不执行这句话qRegisterMetaType<User*>("User*");  也可以发送,真搞不懂了!

zoemolly 2018-05-19 11:23
搞定了,自己也不知道哪里出问题了,总结下
class User
{

public:
    QString m_strName;      //姓名
    QString m_strPassword;  //密码
    ROLE m_eRole;            //角色
    STATUS m_eStatus;        //状态Status 0:在线,:离线
};
Q_DECLARE_METATYPE(User);  

在信号发送之间某处,注册,注意User* 参数不用注册,且只注册一次即可
qRegisterMetaType<User>("User");
qRegisterMetaType<QList<User *>>("QList<User *>");

以下三种信号均可成功发送
void sig_recvOneUser(User);
void sig_recvOneUserp(User *);
void sig_recvUserplist(QList<User *>);

cyberpunker 2018-05-23 09:27
zoemolly:搞定了,自己也不知道哪里出问题了,总结下
class User
{
public:
....... (2018-05-19 11:23) 


jigetage 2018-05-23 11:54
zoemolly:搞定了,自己也不知道哪里出问题了,总结下
class User
{
public:
....... (2018-05-19 11:23) 

一般都是在main函数中进行metatype的注册,正所谓越早越好。


查看完整版本: [-- qt 信号发送自定义数据 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled