• 4968阅读
  • 3回复

一个类发出一个信号,一个类,用connect连接槽,为啥连不上呢? [复制链接]

上一主题 下一主题
离线jn200002
 

只看楼主 倒序阅读 楼主  发表于: 2010-05-19
------------------------------------------class winsdk
winsdk::winsdk()
{
    signaltest();
}
void winsdk::signaltest()
{
        qDebug()<<"[3G][winsdk]testing emit signal>>>>>>>";
             emit writeDatabaseSignal();
        qDebug()<<"[3G][winsdk]testing emit signal>>>>>>>";
}
------------------------------------------class MainWindow

MainWindow::MainWindow
{
        winsdk *winSDK = new winsdk;
        connect(winSDK,SIGNAL(writeDatabaseSignal()),this,SLOT(writeDatabase()));//qDebug  result is true.
}
void MainWindow::writeDatabase(/*QString string*/)
{
    qDebug()<<"[3G][MainWindow]__WRITEDATABASE__in>>>>>>>>>>>>>>>>>>";
}
这是怎么回事呢?先谢过了~!~!~!
运行结果:
[3G][winsdk]testing emit signal>>>>>>>
[3G][winsdk]testing emit signal>>>>>>>
connect result true
离线dbzhang800

只看该作者 1楼 发表于: 2010-05-19
引用楼主jn200002于2010-05-19 10:26发表的 一个类发出一个信号,一个类,用connect连接槽,为啥连不上呢? :
------------------------------------------class winsdk
winsdk::winsdk()
{
    signaltest();
}
void winsdk::signaltest()
{
        qDebug()<<"[3G][winsdk]testing emit signal>>>>>>>";
             emit writeDatabaseSignal();
        qDebug()<<"[3G][winsdk]testing emit signal>>>>>>>";
}
------------------------------------------class MainWindow
MainWindow::MainWindow
{
        winsdk *winSDK = new winsdk;
        connect(winSDK,SIGNAL(writeDatabaseSignal()),this,SLOT(writeDatabase()));//qDebug  result is true.
}
void MainWindow::writeDatabase(/*QString string*/)
{
    qDebug()<<"[3G][MainWindow]__WRITEDATABASE__in>>>>>>>>>>>>>>>>>>";
}
.......


搞清楚那个执行在前,那个在后!
离线jn200002

只看该作者 2楼 发表于: 2010-05-19
解决:

要在connect之后,再调用一次发出信号的函数。。。否则第一次发出的信号因为还没有建立连接会失效。
离线jn200002

只看该作者 3楼 发表于: 2010-05-19
引用第1楼dbzhang800于2010-05-19 11:29发表的  :
搞清楚那个执行在前,那个在后!


晕,多谢~ !~!
快速回复
限100 字节
 
上一个 下一个