【发布时间】:2016-03-11 12:28:12
【问题描述】:
我正在尝试使用QObject::connect 在线程完成后启动一个槽。
我的班级定义是:
class Test : public QWidget
{
public:
Test(QWidget *parent=0);
private slots:
void do_work();
void show_box();
private:
QFuture<void> work_thread;
QFutureWatcher<void> watcher;
};
我尝试了以下代码:
connect(&watcher, SIGNAL(finished()), this, SLOT(show_box()));
但是当我运行编译后的二进制文件时,它会说:
QObject::connect: No such slot QWidget::show_box()
我也试过
QFutureWatcher<void> *watcher;
connect(watcher, &QFutureWatcher<void>::finished, this, &Test::show_box);
但它会因分段错误而退出。
【问题讨论】:
-
您需要使用 Q_OBJECT 宏才能使信号和插槽工作。我希望 moc 会对此发出警告。