Форум сайта python.su
Добрый день знатокам!
Есть главное окно приложения, внутри которого, кроме всего прочего, находится QTableWidget. Нужно сделать возможность скопировать содержимое item'а в буфер обмена. Проблема в том, что для корректного вычисления item'а на котором кликнул юзер, мне нужно получить координаты курсора (QPoint) относительно QTableWidget, а не относительно родительского виджета, которые выдает мне event.pos().
Вот код контекстного меню:
def contextMenuEvent(self, event): Rmenu = QMenu(self) CopyToClipboardAction = Rmenu.addAction("Copy content of the cell to clipboard") action = Rmenu.exec_(self.mapToGlobal(event.pos())) if action == CopyToClipboardAction: row = self.tableWidget.rowAt(event.pos().y()) col = self.tableWidget.columnAt(event.pos().x()) print("row:%d, col:%d" % (row, col))
Офлайн
Координаты тебе нужны только для вывода кастомного меню. Текущий элемент получают примерно так:
item = self.tableWidget.item(self.tableWidget.currentIndex().row(), self.tableWidget.currentIndex().column())
Офлайн
Rodegast, спасибо тебе огромное! Работает как часики!
Попутно возник еще один вопрос: что нужно проверять, чтобы показывать контекстное меню только, если клик был в пределах tableWidget? В моем случае контекстное меню вылазит везде)))
Отредактировано saicat (Июль 10, 2015 15:38:24)
Офлайн
Не нужно использовать contextMenuEvent. Если меню одно и тоже для всех элементов таблицы, то проще всего его создать как ActionsContextMenu
Офлайн
Переделал. Работает как надо. Понял разницу. Еще раз спасибо за помощь!!
Офлайн