• 7400阅读
  • 5回复

[已解决] 请教QThread子类run中为什么发射信号没效果 [复制链接]

上一主题 下一主题
离线blackdire
 

只看楼主 倒序阅读 楼主  发表于: 2008-03-01
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
写了个小程序,在QThread子类中的run发射信号,GUI中的相应的槽调用不到,不知为何。

附件是程序源码
在Password::run()中emit PasswordCreated( eGenPswRet );却调不到QPasswordCreatorMainDialog::PswGenerated( PasswordGenPswType eGenPswRet )
[ 此贴被blackdire在2008-06-22 21:39重新编辑 ]
附件: QPasswordCreator.zip (9 K) 下载次数:58
离线blackdire

只看该作者 1楼 发表于: 2008-03-01
又搜了一下,好像C++内建类型是可以通过信号传递的,自定义的类型不行,论坛里有class的情况,用qRegisterMetaType注册一下就可以传递,但是自定义枚举类型怎么处理?试了一下qRegisterMetaType,编译会出错。

现在用static_cast强转成int,连接的槽就可以调用了,但是有没有不需要强转的办法?
离线cxxidian
只看该作者 2楼 发表于: 2008-04-06
我传递QString  时,也不行,但改为const QString 就好了,不知道可不可以 用到自定义的类型
你TRY
离线XChinux

只看该作者 3楼 发表于: 2008-04-06
在信号中使用自定义类型:
1、使用Q_DECLARE_METATYPE()对你的类型进行声明;
2、使用前使用qRegisterMetaType()进行注册;
请参考相关文档。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线blackdire

只看该作者 4楼 发表于: 2008-04-13
谢谢回复
离线txy2008msn
只看该作者 5楼 发表于: 2009-03-13
路过看一下
快速回复
限100 字节
 
上一个 下一个