我必须在QTableView中显示数据,我有一个拥有数据的模型,但我将QAbstractProxyModel子类化为在我的模型中转置数据。此外,我只需要QTableView中的一个按钮,可以通过继承QItemDelegate来实现, 现在的问题是当我设置view-> setItemDelegate(MyItemDelegate)时(对于按钮); 视图 - >则setModel(基于myModel);视图 - >显示(); ...在委派QItemDelegate时,我只找到了我在paint方法中绘制的按钮。 我搜索并发现我需要setModelData()和setEditorData()来设置myModel的值..但我不知道它是否正确,如果它是如何setdata()....提前感谢
PS: - 当我尝试view-> setModel(MyModel);视图 - >显示();没有setItemDelegate ...我可以在QTableView中看到数据......但是在委托后我没有看到数据......所有这些只是QTushView中的QPushButton的痛苦
答案 0 :(得分:0)
想法是添加QItemDelegate :: paint(painter,option,index);在我绘制按钮的派生类的paint方法中。添加上面的代码行可确保首先绘制表格,然后在绘制的表格上方绘制。
所以,解决方案看起来像
void PushButtonDelegate :: paint(QPainter * painter,const QStyleOptionViewItem& option,const QModelIndex& index)const {
QItemDelegate ::涂料(画家,选项,索引);
//使用drawcontrol();
绘制我的按钮}
如果我不这样做,我会丢失我的数据..当你了解油漆是如何工作但不容易实现时这很明显......花了我几个小时