我有一个包含3列和一些行的表。我想
要通过单击其中的单个单元格来显示完整行的选择,我将QT Designer中的 selectionBehabior 设置为 SelectRows 。工作
问题是,我只设法使用一行中的单个项。要在每三个单元格上显示相同的工具提示,我需要将其设置为每个单元格。我的代码:
for entry in entries:
#col 1
item = QtGui.QTableWidgetItem(entry['published'])
item.setToolTip(entry['subtitle'])
self.tableFeedEntries.setItem(i, 0, item)
#col 2
item = QtGui.QTableWidgetItem(entry['author_name'])
item.setToolTip(entry['subtitle'])
self.tableFeedEntries.setItem(i, 1, item)
#col 3
item = QtGui.QTableWidgetItem(entry['title'])
item.setToolTip(entry['subtitle'])
self.tableFeedEntries.setItem(i, 2, item)
i += 1
因此臃肿 我宁愿每行使用setToolTip()和setData()一次,但我不知道怎么做。好吧,虽然这两件事情是某种有趣的,但我在处理选择事件时遇到了一个真正的问题:通过检查当前所选行是否与前一行不相等。
#connection
self.tableFeedEntries.currentItemChanged.connect(self.__show_feed_content)
#method
def __show_feed_content(self, current, previous):
if current is not previous:
data = current.data(QtCore.Qt.UserRole)
content = self.__db.get_entry_content(data['id'])
#etc.
这也会检查项,而不是行。因此,如果单击已选定行中的另一个单元格,则会再次运行相同的进程。
如何将数据和事件处理程序设置为一行?
答案 0 :(得分:1)
您可以实施模型的data
方法:
def data(self, index, role):
if role == Qt.ToolTipRole:
row = index.row()
return [your tooltip]
文档在这里: