我有一个QtableView
,在添加新数据时会调整其大小。用户还可以通过与horizontalHeader
的直接交互(点击拖动)来更改列宽。两个事件都发出信号QtableView.horizontalHeader().sectionResized()
。
我想确定用户是通过更改列宽还是通过函数调用刷新来发出此信号。我如何区分事件?
我尝试使用sender()
,但这两个操作都指的是同一个发件人。
答案 0 :(得分:1)
这是你必须自己做的事情 - 没有神奇的方法。
可能有可能继承QHeaderView
并监视可能触发调整大小的各种用户启动的事件,但这种解决方案可能很难做到。一个更简单,更明显的解决方案是在将新数据添加到表中时设置标志,并在调整列大小后将其取消设置。然后你可以检查连接到sectionResized
信号的任何插槽内的标志,看看是什么触发了它:
def updateTable(self):
self._updating = True
# add new data...
# resize columns...
self._updating = False
def handleSectionResized(self):
if self._updating:
print('updating')
else:
print('user interaction')