• 10001阅读
  • 4回复

【提问】QT的用户信号/槽程序该怎样写? [复制链接]

上一主题 下一主题
 
只看楼主 倒序阅读 楼主  发表于: 2005-08-18
QT的信号/槽能独立使用么?我在程序中,不想使用QT的界面,只是想利用信号/槽来实现我的C++对象的通信。

我用的QT3。3。2,在VS。NET 2003中。程序一连接,就出错。

譬如,我建立了一个3Dview类,在其头文件中做如下声明:
#include <qobject.h>
class C3D_View : public QObject
{
      Q_OBJECT
public:
      C3D_View ();
      ~C3D_View ();
public:
      void display();
signals:
      void dispEvent();
};

然后在类实现中,将display函数作如下定义:

... ...
void C3D_View::display()
{
    emit dispEvent();
}

这个类在编译时,没问题,连接时,提示有一些虚函数连接失败。。。
[ 此贴被背后的小刀在2005-08-18 10:16重新编辑 ]
离线XChinux

只看该作者 1楼 发表于: 2005-08-18
看这个帖子:
http://www.qtcn.org/bbs/read.php?tid=1143
[ 此贴被XChinux在2005-08-20 06:03重新编辑 ]
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线running
只看该作者 2楼 发表于: 2005-08-21
写用户信号/槽程序时需注意几点:
1)、必须在类声明中用到Q_OBJECT;
2)、CONNECT中信号/槽要正确应用;
3)、槽的定义必须在CONNECT之前;
4)、不要胡乱用MOC,一般情况下MOC文件都已经自动生成和处理,只要前面几点注意一般都没问题了。
离线sky_hao

只看该作者 3楼 发表于: 2005-10-18
为什么槽的定义一定要在CONNECT之前,如果我先在前面声明,后定义它不行吗?
离线XChinux

只看该作者 4楼 发表于: 2005-10-18
connect是在函数里写的,而slots是在类定义里声明的.
就像每个函数在使用的时候都要看到他的原型一样.就这道理.
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个