paint清除qtableview中的数据

时间:2016-05-04 13:57:06

标签: qtableview qitemdelegate

我必须在QTableView中显示数据,我有一个拥有数据的模型,但我将QAbstractProxyModel子类化为在我的模型中转置数据。此外,我只需要QTableView中的一个按钮,可以通过继承QItemDelegate来实现, 现在的问题是当我设置view-> setItemDelegate(MyItemDelegate)时(对于按钮); 视图 - >则setModel(基于myModel);视图 - >显示(); ...在委派QItemDelegate时,我只找到了我在paint方法中绘制的按钮。 我搜索并发现我需要setModelData()和setEditorData()来设置myModel的值..但我不知道它是否正确,如果它是如何setdata()....提前感谢

PS: - 当我尝试view-> setModel(MyModel);视图 - >显示();没有setItemDelegate ...我可以在QTableView中看到数据......但是在委托后我没有看到数据......所有这些只是QTushView中的QPushButton的痛苦

1 个答案:

答案 0 :(得分:0)

想法是添加QItemDelegate :: paint(painter,option,index);在我绘制按钮的派生类的paint方法中。添加上面的代码行可确保首先绘制表格,然后在绘制的表格上方绘制。

所以,解决方案看起来像

void PushButtonDelegate :: paint(QPainter * painter,const QStyleOptionViewItem& option,const QModelIndex& index)const {

QItemDelegate ::涂料(画家,选项,索引);

//使用drawcontrol();

绘制我的按钮

}

如果我不这样做,我会丢失我的数据..当你了解油漆是如何工作但不容易实现时这很明显......花了我几个小时