在Qt中使用信号和插槽时,有人可以给我一些东西吗?

时间:2010-10-04 11:03:26

标签: qt signals-slots

我正在学习使用Qt框架编程。当我写一些代码有信号和插槽涉及时,事件似乎没有激发,信号和插槽似乎不起作用。真的让我生气了。你能否给我一些关于Qt信号和插槽的警告和警告?

广告位声明:

private slots:
            void onFtpCmdFinish(int cmdId, bool error);
            void onRealtimeFtpCmdsDone(bool error);

连接代码:

   ftpHandle = new QFtp( this );
   connect(ftpHandle, SIGNAL(commandFinished(int, bool)), this, SLOT(onFtpCmdFinish(int, bool)));

   connect(ftpHandle, SIGNAL(done(bool)), this, SLOT(onRealtimeFtpCmdsDone(bool)));

提前谢谢!

4 个答案:

答案 0 :(得分:3)

将来,如果您碰巧再次遇到Qt信号和插槽的问题,以下博客条目的内容可以变成真正的救生员(或者至少是一个非常好的起点)你的调查):

http://samdutton.wordpress.com/2008/10/03/debugging-signals-and-slots-in-qt/

它精心列出了20种调试/排除信号和插槽故障的方法;按照这个列表,很有可能你最终会发现什么是错的。

我希望有所帮助。

答案 1 :(得分:3)

您只能在运行时检测失败的connect()。

一些提示:

定义QT-FATAL-WARNINGS = 1将导致Qt在获得不匹配的连接时断言并退出。

或将每个连接包裹在:
bool ok = connect(......); QASSERT(ok);

答案 2 :(得分:2)

总是检查返回类型,如果它是真的那么CONNECT成功,否则有些错误..

答案 3 :(得分:1)

如果要编写多线程应用程序,请不要忘记第五个参数Qt :: ConnectionType