我在 QAbstractItemDelegate (我自己的 Item 委托类)中重载了 paint() 函数。
拖动时,它会绘制整个单元格的内容,这是我不想要的。我假设在拖动时用特定的东西调用了 paint() 函数,但我似乎没有找到它。
我能找到的最接近的是拥有视图类中的 QState 变量(访问函数 QTableView::state() 受保护。)通过在我的 QTableView 派生类上创建一个名为“isDragging()”的函数,它调用函数并返回是否拖动,我可以在我的委托类中确定我是否在拖动,并且可以修改 paint() 函数。
这几乎可以工作。
问题是它在原始单元格中显示修改后的绘画图像,这是我不想要的 - 我想保持原始单元格中的图像保持不变。
我想,必须搜索这些例子,看看是否有什么东西可以做到这一点......
我已经浏览了 Qt 源代码,我可以通过调用 QItemDelegate::paint() 函数看到它设置拖动像素图的位置,但它唯一改变的是它在项目选项样式中强制 QStyle::State_Selected。这还不够,因为该项目已被选中。
有什么方法可以知道如何在拖动时显式绘制单元格的内容?