PySide6中Python向QML发射List类型信号无响应求助
解决PySide6中Python发射List信号QML无法接收的问题
你的代码核心问题是QML中Connections的槽函数名称与Python定义的信号名不匹配。Python端定义的信号是getListTest,按照QML的信号关联规则,对应的槽函数需要命名为onGetListTest(信号名首字母大写,前缀加on),而你写的是onSignal,导致信号无法被正确关联。
修改后的QML代码
Connections { target: signalEmitter function onGetListTest(res) { console.log(`------------`); console.log(`qml list is ${res}`); console.log(`------------`); } }
可选优化:明确信号类型
为了让类型匹配更清晰,建议在Python中显式指定信号的类型为QVariantList(PySide6中list会自动映射为QVariantList,但显式声明更易维护):
from PySide6.QtCore import QObject, Signal, Slot, QVariantList # ... class PythonSignalEmitter(QObject): getListTest = Signal(QVariantList) # 其余代码不变
修改后重新运行程序,触发callList槽后,QML端就能正常打印接收到的列表内容。
内容的提问来源于stack exchange,提问作者codeKiller
相关产品推荐
相关产品推荐

