Я перегружаю функцию paint () в QAbstractItemDelegate (мой собственный класс делегата Item).
При перетаскивании рисует содержимое всей ячейки, что мне не нужно. Я предполагаю, что функция paint () вызывается с чем-то конкретным при перетаскивании, но, похоже, я не могу найти это.
Самое близкое, что мне удалось найти, - это переменная QState в собственном классе представления (функция доступа QTableView :: state () защищена.) Создавая функцию в моем производном от QTableView классе, называемую isDragging () который вызывает эту функцию и возвращает ли перетаскивание или нет, я могу определить в своем классе делегата, перетаскиваю ли я или нет, и могу изменить функцию paint ().
Это почти работает.
Проблема в том, что в исходной ячейке отображается измененное изображение краски, которое мне не нужно - я хочу оставить изображение в исходной ячейке без изменений.
Полагаю, мне нужно изучить примеры и посмотреть, есть ли что-то, что делает это ...
Я просканировал источник Qt и вижу, где он устанавливает растровое изображение перетаскивания, вызывая функцию QItemDelegate :: paint (), но единственное, что он меняет, - это принудительно вызывает QStyle :: State_Selected в стиле опции элемента. Этого недостаточно, поскольку элемент уже выбран.
Есть ли способ узнать, как явно перетаскивать содержимое ячейки при перетаскивании?