qt - Qml - qml 中的 C++ 信号参数“未定义”
问题描述
我收到来自工作线程的信号并通过 C++ Singleton (CTaskManager) 将其重新发送到 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 信号连接中只得到未定义的参数。
Connections
{
target: TaskManager
onFinished:
{
}
}
有任何想法吗 ?
解决方案
这似乎是 Qt 5.11 中已知的错误。
推荐阅读
- sql - 在结果表中的 SQL 中添加附加列“TYPE”
- java - flink:无法初始化类 org.apache.hadoop.hdfs.protocol.HdfsConstants
- csv - Odoo 10 .csv 文件导入
- flutter - 非小部件类上的 ChangeNotifier
- c# - C# Outlook Mailitem ContextMenu 和 Ribbon 不能一起工作(只能分开)
- angular - ngx-extended-pdf-viewer 无法使用 Url
- xml - 使用其 XSLT 属性的名称命名元素
- ios - Xcode UI 测试计划
- angular - 从组件中获取当前应用的 Angular Material 主题
- pandas - 如何提取相邻行?