首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QFutureWatcher不调用连接时隙

QFutureWatcher不调用连接时隙
EN

Stack Overflow用户
提问于 2014-03-22 13:53:41
回答 1查看 2.1K关注 0票数 4

下面的代码用QFutureWatcher实现QFutureWatcher来启动运行shell进程的fetch()函数。完成后,我想调用writeDesc函数,但它从未被调用。

代码语言:javascript
复制
void MyClass::on_fetchButton_clicked()
{
    QFuture<void> fetcher;
    QFutureWatcher<void> watcher;
    connect(&watcher, SIGNAL(finished()), this, SLOT(writeDesc()));
    fetcher = QtConcurrent::run(this, &MyClass::fetch);
    watcher.setFuture(fetcher);
}

void MyClass::fetch()
{
    [...]
    qDebug()<<"Thread done";
}

void MyClass::writeDesc()
{
    qDebug()<<"Slot called";
    [...]
}

fetch()工作正常,但程序只显示调试消息Thread done,而不显示Slot called。为什么writeDesc没有被调用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-22 14:11:47

问题是,当离开MyClass::on_fetchButton_clicked()方法时,观察者对象会被破坏。被摧毁的物体不能发射某种东西。尝试在类的构造函数中分配和连接观察者。别忘了在毁灭器里毁灭。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22578471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档