擅长:python、mysql、java
<p>当然,正如Achayan所回答的那样,您可以使用<code>QAction</code>的<code>setData()</code>来设置额外的数据,<code>data()</code>来获取存储的数据。在</p>
<p>但是,上面的内容将解决您的问题,让我们看看扩展QAction。<code>QWidget</code>,<code>QMenu</code>基于并实现了允许传递<code>QAction</code>对象的{<cd6>}。在</p>
<pre><code>class ActionObject( QtGui.QAction ):
def __init__( self, text="", parent=None ):
super( ActionObject, self ).__init__(text, parent )
self.data = None
class ExampleWidget(QtGui.QWidget):
# ...[cut]...
def initUI(self):
# ...[cut]...
# sub-menu
for x in xrange(len(names)):
name = str(x) + " - " + names[x]
action = ActionObject(name, self.sub_menu)
action.data = Person()
action.triggered.connect(self.menu_action)
self.sub_menu.addAction(action)
</code></pre>
<p>父对象已经被显式设置,因为它是<code>QWidget</code>的实现,而不是{<cd5>}。在</p>
<p>这就是PyQt/Pyside允许在几乎所有地方使用自定义对象的方式,而无需使用monkey补丁。在</p>