在QT QApplication中,图像显示在scrollArea内部。在此图像上添加了几个Qlabel。我希望每个Qlabel都有一个不同的事件。如何找到我们在链接到Qlkabel mousePressEvent的函数的定义中单击的qt小部件?
def fct1(event):
pt_wid_click = wind1.ui.scrollArea.childAt(event.globalX(), event.globalY())
print(pt_wid_click)
pt_wid = []
for ii in range(8):
pt_wid.append(QLabel(wind1.ui.scrollAreaWidgetContents))
pt_wid[ii].move(100+20*ii, 200+20*ii)
pt_wid[ii].setText('+ text {}'.format(ii))
pt_wid[ii].mousePressEvent = fct1
找到的唯一小部件是Qlabel(图像)。
使用lambda函数的解决方案始终使用fct1发送相同的变量:
def fct1(ii):
print(ii)
并带有mousePressEvent行:
pt_wid[ii].mousePressEvent = lambda event:fct1(ii)
在这种情况下,它总是打印“ 7”