0

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

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

4

1 回答 1

0

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

所以,解决方案看起来像

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

QItemDelegate::paint(painter,option,index);

//使用drawcontrol()绘制我的按钮;

}

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

于 2016-05-04T15:11:59.417 回答