我找到一个办法,如下:
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必须是全局对象。
不知道有没有其他的方法?