繁体   English   中英

Qt连接找不到插槽

[英]Qt connect can't find slot

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

但它会出现分段错误。

Test缺少Q_OBJECT

Q_OBJECT宏有什么作用? 为什么所有Qt对象都需要这个宏?

如果没有,信号/插槽不起作用。

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;
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM