如何获取修改后的 QSpinBox 的 objectName?

How to get the objectName of a modified QSpinBox?

我想跟踪用户在我定制的应用程序中修改公司的预测。 我使用 qt designer 和 PyQt4 创建了它,并且我使用 QSpinBox 来获取数量(控制值范围并将字段屏蔽为仅数字的简单方法)。 我遇到的问题是当我想获得触发我的功能的 QSpinBox 时。 目前它正在使用 valueChanged.connect 触发,但可以使用其他任何东西。 我可以得到 spinbox 中的 int 但不是 spinbox 的名称。 预先感谢您的帮助!

解决方案

QSpinBox 元素

self.Item = QtGui.QSpinBox(self.centralwidget)  
self.Item.setObjectName(_fromUtf8("ItemName"))

触发器

self.Item.valueChanged.connect(self.foo)

它调用的函数

def foo(self,obj):  
    sender = MainWindow.sender()  
    print sender.objectName()

在这种情况下 "MainWindow" 是我的 QtCore.QObject

作为标记为 C++ 的问题。我在 C++ 和 pyQt4 中回答。我从未在 pyQt4 工作过。所以请原谅我的语法。

在“valueChanged插槽中使用QObject::sender()获取触发它的微调框。

然后调用"objectName()".

QObject* obj = sender();
QString objName = obj->objectName();

可能在 python:

 sender = QtCore.QObject.sender()
 str = sender.objectName()