本文介绍了Qml - c++ 信号参数“未定义";在 qml的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我收到来自工作线程的信号并通过 C++ Singleton (CTaskManager) 将其重新发送到 qml.
I receive a signal from a worker thread and re-emit it via C++ Singleton (CTaskManager) to qml.
void CTaskManager::runAsync(CTask* task)
{
Q_CHECK_PTR(task);
QThread* thread = new QThread();
task->moveToThread(thread);
connect(this , SIGNAL(canceled()) , task , SLOT(cancel()) , Qt::DirectConnection);
connect(task , SIGNAL(progressChanged(float)) , this , SLOT(setProgress(float)) , Qt::DirectConnection);
connect(task , SIGNAL(finished(bool,unsigned int, const QVariantMap&)) , this , SLOT(setFinished(bool,unsigned int, const QVariantMap&)) , Qt::DirectConnection);
connect(thread , SIGNAL(started()) , task , SLOT(run()));
connect(task , SIGNAL(finished(bool,unsigned int, const QVariantMap&)) , thread, SLOT(quit()));
connect(thread , SIGNAL(finished()) , task , SLOT(deleteLater()));
connect(thread , SIGNAL(finished()) , thread, SLOT(deleteLater()));
thread->start();
}
void CTaskManager::setFinished(bool canceled, unsigned int error, const QVariantMap& args)
{
emit this->finished(canceled, error, args);
}
这适用于 LINUX 下的 Qt Creator 4.6.1.当我在 Windows 下运行相同的项目时,我的 qml 信号连接中只得到未定义的参数.
This works fine with Qt Creator 4.6.1 under LINUX. When i run the same Project under Windows i get only undefined parameters in my qml signal connection.
Connections
{
target: TaskManager
onFinished:
{
}
}
有什么想法吗?
推荐答案
这似乎是 Qt 5.11 中已知的错误.
It seems like a bug in Qt 5.11 which is already known.
这篇关于Qml - c++ 信号参数“未定义";在 qml的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!