整个是从友善的hello示例的基础上改的:
main.cpp (部分):
#include <signal.h>
#include <sys/types.h>
#include <qmessagebox.h>
void sigusr1_handler(int)
{
QMessageBox::information(NULL,QObject::tr("sigaction"),QObject::tr("received a SIGUSR1 signal."));
}
int main(int argc,char **argv)
{
struct sigaction action;
sigaction(SIGUSR1,NULL,&action);
action.sa_handler = sigusr1_handler;
sigaction(SIGUSR1,&action,NULL);
QPEApplication a(argc,argv,QApplication::GuiClient);
HelloForm wg;
wg.showFullScreen();
return a.exec();
}
Hello.cpp (部分):
#include <signal.h>
#include <sys/types.h>
#include <qmessagebox.h>
void HelloForm::onSigusr1()
{
QMessageBox::information(this,tr("onSigusr1"),tr("raise a SIGUSR1 by ::raise now."));
::raise(SIGUSR1);
}
onSigusr1连接到界面上一个按钮的onclicked信号。现在raise a SIGUSR1 by ::raise now.对话框式能弹出的,说明下面的::raise应该也是执行了的。
但从表面上看,QMessageBox::information(this,tr("onSigusr1"),tr("raise a SIGUSR1 by ::raise now."));这个对话框点击OK之后,界面就死了,完全没有进入void sigusr1_handler(int),这是为什么呢?