Написал код для MCV:
C++ (Qt)
///model.h :
#pragma once
#include <QTCore/QAbstractListModel>
class SelectionGUI;
class CPropTableModel: public QAbstractTableModel
{
public:
CPropTableModel(SelectionGUI* pGUI,const std::list<const IObject*> &selected_objects,QObject *parent=0);
~CPropTableModel();
void OnSelect();
void ClearSelection();
////QAbstractListModel overridables:
int rowCount(const QModelIndex &parent) const;
int columnCount(const QModelIndex &parent) const;
Qt::ItemFlags flags(const QModelIndex &index) const;
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
bool setData(const QModelIndex &index, const QVariant &value, int role);
QVariant data(const QModelIndex &index, int role) const;
};
////delegate.h :
#pragma once
#include <QTGui/qitemdelegate.h>
class CPropTableDelegate :public QItemDelegate
{
public:
enum PropTableRole{PROP_TABLE_WIDGET=Qt::UserRole+1,PROP_TABLE_FIELD_TYPE};
CPropTableDelegate(QObject *parent=0);
~CPropTableDelegate(void);
QWidget* createEditor(QWidget *parent,const QStyleOptionViewItem &,const QModelIndex & ) const;
void updateEditorGeometry(QWidget *editor,const QStyleOptionViewItem &option, const QModelIndex &) const;
void setEditorData(QWidget *editor,const QModelIndex &index) const;
void setModelData(QWidget *editor, QAbstractItemModel *model,const QModelIndex &index) const;
virtual QSize sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index ) const;
};
Когда прицепляю модель и делегат к QTableView sizeHint() не действует ,
когда прицепляю к QListView - sizeHint() действует, но отображается только 1 колонка вместо 2. Что делать?