Вы должны использовать indexAt()
, если хотите получить QModelIndex, связанный с нажатым элементом, или itemAt()
, возвращенный QTreeWidgetItem
def openMenu(self,position):
menu = QtWidgets.QMenu()
deleteAction = menu.addAction("Delete")
showAction = menu.addAction("Show")
pos = self.treeWidget.viewport().mapToGlobal(position)
action = menu.exec_(pos)
if action == deleteAction:
ix = self.treeWidget.indexAt(position)
if ix.isValid():
print(ix.data())
it = self.treeWidget.itemFromIndex(ix)
texts = [it.text(c) for c in range(it.columnCount())]
print(texts)
Один путь состоит в том, чтобы гарантировать, что каждый узел в топологии репликации использует различный диапазон значений идентификационных данных, так, чтобы дубликаты не происходили.
Например, Издателю можно было присвоить диапазон 1-100, Подписчик диапазон 101-200 и Подписчик B диапазон 201-300. Если строка вставляется в Издателе, и значение идентификационных данных, например, 65, то значение копируется в каждого Подписчика. Когда репликация вставляет данные в каждом Подписчике, это не увеличивает значение столбца идентификационных данных в таблице Subscriber; вместо этого, литеральное значение 65 вставляется. Только пользователь вставляет, но не агент репликации вставляет, заставляют значение столбца идентификационных данных быть увеличенным.