QTreeView和委托(

QTreeView和委托(,qt,delegates,Qt,Delegates,我为自定义图形QTreeWidget或QTreeView创建了此委托 但它不起作用,TimeLineDelegate::paint未被调用 例如,我尝试使用QTreeWidget和QTreeView class TimeLineDelegate : public QItemDelegate { Q_OBJECT public: TimeLineDelegate(QObject *o):QItemDelegate(o){} void paint(QPainter *painter, const Q

我为自定义图形QTreeWidget或QTreeView创建了此委托 但它不起作用,
TimeLineDelegate::paint
未被调用 例如,我尝试使用QTreeWidget和QTreeView

class TimeLineDelegate : public QItemDelegate
{
Q_OBJECT
public:
TimeLineDelegate(QObject *o):QItemDelegate(o){}
void paint(QPainter *painter, const QStyleOptionViewItem &option,
    const QModelIndex &index);
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index);
};
QTreeView*myView=new QTreeView();
TimeLineDelegate*delegat=新的TimeLineDelegate(myView);
myView->setItemDelegate(新建TimeLineDelegate(此));
QStandardItemModel*myModel=新QStandardItemModel();
QStandardItem*parentItem=myModel->invisibleRootItem();
对于(int i=0;i<4;++i){
QStandardItem*项=新QStandardItem(
QString(“项目%0”).arg(i));
parentItem->appendRow(项目);
如果(i==0)
父项=项;
否则{
项目->设置数据(34);
}}
myView->setModel(myModel);
myView->show();

您忘记了
const
paint
方法的说明符。请参见derzai,bud'vnimatlenee:)
QTreeView *myView = new QTreeView();
TimeLineDelegate *delegat = new TimeLineDelegate(myView);
myView->setItemDelegate(new TimeLineDelegate(this));

QStandardItemModel *myModel = new QStandardItemModel();
QStandardItem *parentItem = myModel->invisibleRootItem();
for (int i = 0; i < 4; ++i) {
    QStandardItem *item = new QStandardItem(
        QString("item %0").arg(i));
    parentItem->appendRow(item);
    if (i == 0)
        parentItem = item;
    else {
        item->setData(34);
    }}
    myView->setModel(myModel);

    myView->show();