Qt doubleClicked 事件发出两次
Posted
技术标签:
【中文标题】Qt doubleClicked 事件发出两次【英文标题】:Qt doubleClicked event emitted twice 【发布时间】:2018-07-04 09:25:45 【问题描述】:我有一个 QTableView 和一个只有一列的 QAbstractview。我将双击事件分配给 QTableView,它调用一个打印所选值的函数。奇怪的是,当表中只有一条记录时,它可以正常工作。当有更多记录时,该函数总是被调用两次。
这是我的代码:
class ViewWindow(QWidget):
def __init__(self):
super(ViewWindow, self).__init__()
loader = QUiLoader()
file = QFile(abspath("ui/view.ui"))
file.open(QFile.ReadOnly)
self.view_screen = loader.load(file, self)
file.close()
self.initUI()
def initUI(self):
self.model = QStandardItemModel(parent=self)
self.model.setColumnCount(1)
self.model.setRowCount(len(d))
for i in range(0, len(d)):
self.model.setItem(i, 0, QStandardItem(str(d[i]['file'+str(i+1)])))
self.view_screen.tbl_attachments.setModel(self.model)
self.view_screen.tbl_attachments.setAlternatingRowColors(True)
self.view_screen.tbl_attachments.verticalHeader().setVisible(False)
self.view_screen.tbl_attachments.horizontalHeader().setVisible(False)
self.view_screen.tbl_attachments.setSelectionMode(QAbstractItemView.SingleSelection)
self.view_screen.tbl_attachments.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.view_screen.tbl_attachments.setShowGrid(False)
self.view_screen.tbl_attachments.setFocusPolicy(Qt.NoFocus)
self.view_screen.tbl_attachments.setColumnWidth(0, 680)
self.view_screen.tbl_attachments.doubleClicked.connect(self.open_attachment)
def open_attachment(self):
print (self.view_screen.tbl_attachments.currentIndex().data())
有人知道这个问题吗?
非常感谢和最好的问候
编辑:
我想通了:当我手动添加元素时,它会起作用。从json添加它似乎是问题所在。我就是这样做的:
urllib.urlcleanup()
f = urllib.urlopen("https://kose.kutschera.co.at/view_attachments_client.php?aussendung_id=22")
s = f.read()
f.close()
d = json.loads(s)
self.model = QStandardItemModel(parent=self)
self.model.setColumnCount(1)
self.model.setRowCount(len(d))
for i in range(0, len(d)):
attach = str(d[i]['file'+str(i+1)])
self.model.setItem(i, 0, QStandardItem(attach))
有什么想法吗? - 谢谢
【问题讨论】:
请编辑您的问题以提供minimal reproducible example。 QTableView 没有信号itemDoubleClicked,只有doubleClicked,我用过你的代码,运行正常,请提供minimal reproducible example,显示view.ui 内容 是itemDoubleClicked
还是doubleClicked
?
我已经尝试了它的最新更新,它可以正常工作。你能回答吗?
它是双击的。抱歉发错了,我已经编辑了。
【参考方案1】:
我发现了问题。我在我多次调用的函数中连接了打印函数。所以它被连接了好几次......
感谢你们的帮助。
【讨论】:
以上是关于Qt doubleClicked 事件发出两次的主要内容,如果未能解决你的问题,请参考以下文章