标题:qt 信号发送自定义数据
作者:zoemolly
日期:2018-05-18 22:33
内容:
class user
{
private:
QString strName;
QStirngstrPassword;
}
User 类如上
Q_DECLARE_METATYPE(User);
已经声明过了
qRegisterMetaType("User");
在connect 之前也注册过了。
在不同的窗口都需要传递User类,怎么注册? 要注册很多次吗? 在什么地方注册?connect之前就可以, 还是必须在构造函数里面注册?
目前我遇到的问题是 我在一个单例类里发送信号 SINGAL(User),在窗口里 始终收不到信号 ,明天再试试 不知道哪里出问题了?
#1 [zoemolly 05-18 22:35]
已经经常这么用,不知道为啥现在不行了 - -!
#2 [zoemolly 05-18 22:35]
还有就是 我如果用User* 指针当参数,也需要注册对吧?
#3 [zoemolly 05-19 10:43]
刚才试了试,发送 User* 参数 不执行这句话qRegisterMetaType("User*");也可以发送,真搞不懂了!
#4 [zoemolly 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");
qRegisterMetaType("QList");
以下三种信号均可成功发送
void sig_recvOneUser(User);
void sig_recvOneUserp(User *);
void sig_recvUserplist(QList);
#5 回 zoemolly 的帖子 [cyberpunker 05-23 09:27]
zoemolly:搞定了,自己也不知道哪里出问题了,总结下
class User
{
public:
....... (2018-05-19 11:23)