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