【问题标题】:Find the index of a clicked field in QTableView在 QTableView 中查找点击字段的索引
【发布时间】:2014-02-11 23:25:43
【问题描述】:

在 QTableView 中,我需要找到被点击的字段的索引。我有以下方法,我想通过在单击的表的字段中按“ctrl+v”来粘贴剪贴板中的值:

    QShortcut(QKeySequence('Ctrl+v'),self).activated.connect(self._handlePaste)

     # paste the value  
def _handlePaste(self):
    clipboard_text = QApplication.instance().clipboard().text()
    #item = QTableWidgetItem()
    #item.setText(clipboard_text)
    NvmQtModel.setData(self, index, clipboard_text, Qt.DisplayRole)
    print clipboard_tex

更新:

    # paste the value  
def _handlePaste(self):
    clipboard_text = QApplication.instance().clipboard().text()
    index = QItemSelectionModel.selectedIndexes()
    NvmQtModel.setData(self, index, clipboard_text, Qt.DisplayRole)

例外:

    index = QItemSelectionModel.selectedIndexes()
    TypeError: QItemSelectionModel.selectedIndexes(): first argument of unbound  method  must have type 'QItemSelectionModel'

【问题讨论】:

  • 您必须在模型的实际实例上调用selectedIndexes。您正在尝试以静态方式调用它。 tableView.selectionModel().selectedIndexes() 将是正确的方法,显然您必须将 tableView 替换为实际包含 QTableView 的任何变量。 NvmQtModel.setData(...) 看起来也有些可疑。

标签: python qt pyqt qtableview


【解决方案1】:

QAbstractItemView::indexAt 方法适用于您的问题。但我建议您使用 selection model 而不是检测点击。

【讨论】:

  • 你的意思是这样的吗? index = QItemSelectionModel.selectedIndexes()
  • 是的。但是您应该确定,未启用多选。因为选择的索引是数组。
  • 异常:TypeError:QItemSelectionModel.selectedIndexes():未绑定方法的第一个参数必须具有类型“QItemSelectionModel”
猜你喜欢
  • 2014-01-08
  • 2020-08-27
  • 1970-01-01
  • 2022-11-13
  • 2019-02-20
  • 1970-01-01
  • 2012-03-05
  • 2018-07-14
相关资源
最近更新 更多