Я программист-любитель, поэтому, пожалуйста, извините за плохое кодирование.
Я пытаюсь создать перетаскивание для содержимого QTableWidget. Я попытался создать изображение для представления перетаскиваемого содержимого, когда происходит событие перетаскивания. В конце концов мне удалось выяснить, как заполнить изображение всей таблицы, отрисовав всю таблицу вместо только выделенных ячеек.
Вместо этого это то, что я хочу, когда происходит перетаскивание
import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QTableWidget, QTableWidgetItem,QFrame,QHBoxLayout,QTableWidgetSelectionRange)
from PyQt5.QtCore import Qt, QMimeData, QByteArray
from PyQt5.QtGui import QDrag, QPixmap
import pickle
# from PyQt5.QtCore import QSty
class SpreadSheet(QTableWidget):
def __init__(self,r,c, parent = None):
super().__init__(r,c, parent)
self.cellPressed.connect(self.on_press)
self.show()
def on_press(self):
# Disable drag ability being set previously
self.setDragEnabled(False)
# If selected cells greater than 1, allow dragging
if len(self.selectedIndexes()) > 1:
self.setDragEnabled(True)
test = [1,2,3]
data = QByteArray(pickle.dumps(test))
mime_data = QMimeData()
#mimetype, actual data
mime_data.setData('DataFrame', data)
pixmap = QPixmap(self.size())
self.render(pixmap)
hotSpot = self.pos()
drag = QDrag(self)
drag.setMimeData(mime_data)
drag.setPixmap(pixmap)
drag.setHotSpot(hotSpot)
dropAction = drag.exec_(Qt.MoveAction)
Интересно, знает ли кто-нибудь какой-либо способ заполнения (рендеринга) изображения только для выбранных ячеек в таблице.
Задача ещё не решена.
Других решений пока нет …