循环中的 QtCore.QObject.connect 只影响最后一个实例

QtCore.QObject.connect in a loop only affects the last instance(循环中的 QtCore.QObject.connect 只影响最后一个实例)
本文介绍了循环中的 QtCore.QObject.connect 只影响最后一个实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我有一个循环.我创建了一个 QCheckBox 并将它放在一个 QTableWidget 单元格中,一切正常.在循环的每一步中,我都为 myslot SLOT 调用了一个 connect 函数,但只应用了最后一个 QCheckBox 实例.我用谷歌搜索了很多,发现很多人都有我的问题.我已经应用了他们的解决方案,但我的问题仍然存在.

I have got a loop. I created a QCheckBox and put it in a QTableWidget cell, and everything is Ok. In each step of loop I have called a connect function, for myslot SLOT, but only the last QCheckBox instance is applied. I googled a lot and have found many people have my problem. I have applied their solutions, but my problem remains.

for row in xrange(len(uniqueFields)):
    instance = QtGui.QCheckBox(uniqueFields[row], findInstance.tableWidget)
    print QtCore.QObject.connect(instance,
        QtCore.SIGNAL(_fromUtf8("stateChanged (int)")),
        lambda: findInstance.projectsInstance.myslot(
                    "TWCH", findInstance, instance.text(),
                    instance.checkState(), instance))
    findInstance.tableWidget.setRowCount(findInstance.tableWidget.rowCount() + 1)
    findInstance.tableWidget.setCellWidget(row, 0, instance)

注意:我的connect函数返回True.

如何在枚举所有实例的循环中创建connect函数?

How to create connect function in a loop that enumerates all of the instances?

推荐答案

我有同样的问题,你应该使用 functools.partial 如:

I have same problem , you should use functools.partial such as:

for key, val in a_DICT_THAT_YOU_STORED_YOUR_OBJECTS_AND_STRINGS:
    obj = partial(   findInstance.projectsInstance.myslot,arg1="TWCH",arg2=self,arg3=key,arg4=val.checkState() )
    QtCore.QObject.connect(val, QtCore.SIGNAL(_fromUtf8("stateChanged (int)")), obj)

当然,argX 应该设置为你的函数名参数的真实名称.

Of course, argX should set to your real name of your argument of your function name.

这篇关于循环中的 QtCore.QObject.connect 只影响最后一个实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Is it possible to connect a signal to a static slot without a receiver instance?(是否可以在没有接收器实例的情况下将信号连接到静态插槽?)
how to restart my own qt application?(如何重新启动我自己的 qt 应用程序?)
Where in Qt Creator do I pass arguments to a compiler?(在 Qt Creator 中,我在哪里将参数传递给编译器?)
Using a Qt-based DLL in a non-Qt application(在非 Qt 应用程序中使用基于 Qt 的 DLL)
Configuring the GCC compiler switches in Qt, QtCreator, and QMake(在 Qt、QtCreator 和 QMake 中配置 GCC 编译器开关)
Difference between creating object with () or without(使用 () 或不使用 () 创建对象的区别)