• 8051阅读
  • 5回复

怎么将linux的信号转成qt的信号 [复制链接]

上一主题 下一主题
离线jekouwang
 
只看楼主 倒序阅读 楼主  发表于: 2008-11-01
— 本帖被 XChinux 执行加亮操作(2008-11-02) —
例如用signal(int signo, void (*)(int));注册一个信号,然后怎么在一个类里面将收到的linux的信号转变成Qt的自定义的信号发送。经验证:在上面singal函数中,第二个参数不能使用一个类的非静态成员,所以我没有找到有效的方法。
忘昨天的得与失,珍惜今天的每时每刻和每件小事每一个人,展望美好的明天!
离线jekouwang
只看该作者 1楼 发表于: 2008-11-01
我找到一个办法,如下:
void signal_func(int signo)
{
    emit a.alert();
}

class A : public QObject
{
    friend void signal_func(int);
    Q_OBJECT
public:
    A();
signals:
    void alert();

public slots:
    void alert_slot(){ /*do soming. */}
};

A a;

A::A()
{
    connect( this, SIGNAL(alert()), this, SLOT(alert_slot()));
    signal(SIGALRM, singal_func);
}


这样的确是实现了将Linux的信号转成Qt的信号,可是转换成对象函数signal_func函数中的对象a必须是全局对象。
不知道有没有其他的方法?
忘昨天的得与失,珍惜今天的每时每刻和每件小事每一个人,展望美好的明天!
离线XChinux

只看该作者 2楼 发表于: 2008-11-02
Qt文档是这样写的
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线priestmoon

只看该作者 3楼 发表于: 2008-11-02
mark
离线jekouwang
只看该作者 4楼 发表于: 2008-11-03
谢谢了,看了之后才恍然大悟,我怎么之前没有想到这个方法。
忘昨天的得与失,珍惜今天的每时每刻和每件小事每一个人,展望美好的明天!
离线mumutouv

只看该作者 5楼 发表于: 2008-12-23
建议看看man kill,但是除了kill里面的话,其他的信号就不能用了,我开始的时候也这样用,后来到qt-4.2.以上版本就直接用dbus了,更好更强大
快速回复
限100 字节
 
上一个 下一个