Qt connect无法找到广告位

时间:2015-12-07 00:09:21

标签: c++ qt

我正在尝试使用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);

但它会出现分段错误。

1 个答案:

答案 0 :(得分:3)

Q_OBJECT内遗失Test

What does the Q_OBJECT macro do? Why do all Qt objects need this macro?

如果你没有,信号/插槽就无法工作。

class Test : public QWidget{
  Q_OBJECT
public:
  Test(QWidget *parent=0);
private slots:
  void do_work();
  void show_box();
private:
  QFuture<void> work_thread;
  QFutureWatcher<void> watcher;
};