main中QObject::connect(&w, SIGNAL(fail(int)), &t, SLOT(gets(int)));mainscene中 emit fail(m_barriers[0].score);end中void end::gets(int a){ s=a; ui->label->setText("score"); ui->label_2->setText(s); show(); }能否把barriers[0].score传到s
时间: 2024-04-16 19:26:52 浏览: 89
QObject::moveToThread用例
5星 · 资源好评率100%
根据你提供的代码,`QObject::connect(&w, SIGNAL(fail(int)), &t, SLOT(gets(int)))` 将主界面 `w` 的 `fail` 信号连接到了 `end` 类的 `gets` 槽函数。当 `fail` 信号触发时,会将 `w.m_barriers[0].score` 的值传递给 `end::gets(int a)` 函数。
在 `end::gets(int a)` 函数中,你将参数 `a` 的值赋给了 `s` 变量。然后,你尝试使用 `ui->label_2->setText(s)` 将标签的文本设置为 `s` 的值,并将其显示出来。
根据你的问题,你想要将 `w.m_barriers[0].score` 的值传递给 `end` 类中的 `s` 变量。可以将以下代码添加到 `main.cpp` 中的信号和槽函数连接部分:
```cpp
QObject::connect(&w, SIGNAL(fail(int)), &t, SLOT(gets(int)));
QObject::connect(&w, SIGNAL(fail(int)), &t, SLOT(show()));
QObject::connect(&w, SIGNAL(fail(int)), [&t, &w]() {
t.gets(w.m_barriers[0].score);
});
```
这样,当 `fail` 信号触发时,会先调用 `t.gets()` 函数,并将 `w.m_barriers[0].score` 的值作为参数传递给它。然后,再调用 `t.show()` 函数显示界面。
希望这对你有所帮助。如果你还有其他问题,请随时提问。
阅读全文