QThread,信号和插槽

时间:2012-12-19 15:21:02

标签: signals qthread blackberry-10 slots

尝试将相机预览缓冲区渲染到BB10中的opengl渲染器时出现问题(但与任何平台相关)。我的渲染器只是一个基本的开放式gl渲染器,它通过一个相对无限的渲染循环,但我希望从我的相机类(我实例化我的渲染器)发送相机预览缓冲区,因此

myThread = new QThread();
renderer = new BPRenderer();
renderer->moveToThread(myThread);
connect(myThread, SIGNAL(started()), renderer, SLOT(run()));
connect(this, SIGNAL(NewTexture(int)), renderer, SLOT(SetTextureFromRaw(unsigned char*)));
myThread->start();

所以emit函数是:

emit this->NewTexture(camera->buf);

所以这非常基本,我知道它的更新很好。但似乎我可能在我的线程中遇到问题,因为虽然运行信号运行良好,我的settexturefromraw插槽永远不会被触发,我尝试将其设置为本地相机功能,以检查它不是相机(此)功能,但这是工作很好,所以我确定它的settexturefromrawfunc。

如果有人有任何想法将它们扔给我,因为这已经让我有一段时间了!干杯

1 个答案:

答案 0 :(得分:0)

检查控制台输出(您可能需要SSH进入设备并执行“slog2info”)以查看信号是否实际连接。没有看到其余的代码,很难确定,但我猜想NewTexture的参数不匹配。

在connect调用中,您将连接到NewT​​exture(int)。当你发出它时,你正在调用this-> NewTexture(camera-> buf)。通过参数名称,它看起来更像是一个指针。