2014-02-11 4 views
0

В QTableView мне нужно найти индекс поля, в котором он нажат. У меня есть следующий метод, где я хочу, чтобы вставить значение из буфера обмена, нажав «Ctrl + V» в поле таблицы, щелкнули:Найти индекс щелкнутого поля в QTableView

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 

Update:

# 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' 
+2

Вам нужно будет вызвать 'selectedIndexes' в фактическом экземпляре модели. Вы пытаетесь назвать это статически. 'tableView.selectionModel(). selectedIndexes()' будет правильным способом, где вам, очевидно, придется заменить 'tableView' любой переменной, фактически имеющей ваш QTableView. 'NvmQtModel.setData (...)' выглядит несколько подозрительно. – sebastian

ответ

1

QAbstractItemView::indexAt способ есть на ваш вопрос. Но я предлагаю вам работать с selection model вместо обнаружения кликов.

+0

У тебя что-то вроде этого? index = QItemSelectionModel.selectedIndexes() –

+1

Да. Но вы должны быть уверены, что многосегмент не включен. Потому что выбранные индексы - это массив. –

+0

Исключение: ТипError: QItemSelectionModel.selectedIndexes(): первый аргумент метода unbound должен иметь тип 'QItemSelectionModel' –

Смежные вопросы