我自定义了一个多线程类TimerThread
:
TimerThread* t_thread = new TimerThread();
QThread* thread = new QThread();
t_thread->moveToThread(thread);
我想通过界面上的一个按钮ui->startThread
来启动子线程:
connect(ui->startThread, &QPushButton::clicked, thread, &QThread::start);
但是程序报错:error: static assertion failed: Signal and slot arguments are not compatible.
但是我使用了另一种方法连接信号与槽,程序又能正常运行:
connect(ui->startThread, &QPushButton::clicked, thread, [&](){
thread->start();
});
报错的意思是发送的信号参数与槽函数的参数没有对应。但是当我自己定义一个槽函数void testFun(int);
,并且,点击按钮时发出的信号所携带的参数同样与我自定义的槽函数的参数不能对应,但是程序却能正确运行。
connect(ui->startThread, &QPushButton::clicked, this, &MainWindow::testFun);
我非常困惑,大佬能否为我指点迷津,非常感谢🙏🙏🙏
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.