私はいくつかのデータを持っています、例
Company Name | Person Field
-----------------------
(Company1) | [Company1 Descr]
L | [Person1]
(Company2) | [Company2 Descr]
L | [Person2]
L | [Person3]
(Company3) | [Company3 Descr]
L | [Person4]
(Company4) | [Company4 Descr]
L | [Person5]
それはstd::map< CompanyPtr, PersonPtr >
です。map
これをに合わせてQAbstractItemModel
、その後に接続しQTreeView
ます。
Simple Tree Modelの例を使用しましたが、複雑です(ここでは、TreeItem
クラスとsetupModelData
メソッドについて説明しています)。
これが私のモデルクラスです:
class ContractorModel : public QAbstractItemModel
{
Q_OBJECT
// types
enum Position
{
PositionCompany = 0
, PositionContractor
, ColumnCount
};
typedef std::map< CompanyPtr, ContractorPtr > ComConMap;
typedef std::pair< CompanyPtr, ContractorPtr > ComConPair;
// methods
void _init();
public:
ContractorModel( QObject* parent = 0 );
~ContractorModel();
QVariant data( const QModelIndex &index, int role /* = Qt::DisplayRole */ ) const;
QVariant headerData( int section, Qt::Orientation orientation, int role /* = Qt::DisplayRole*/ ) const;
QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const;
QModelIndex parent( const QModelIndex &index ) const;
int rowCount( const QModelIndex &parent /* = QModelIndex */ ) const;
int columnCount( const QModelIndex &parent /* = QModelIndex */ ) const;
signals:
void resizeToContents();
public slots:
void refresh();
void refreshData();
protected:
private:
ContractorItem* rootItem;
ComConMap buddies_ccm_;
};
そして私のクラスでは、この2つのメソッドを正しく実装できません。
QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const;
QModelIndex parent( const QModelIndex &index ) const;
多分誰かがすでにこの問題を解決しましたか?
ありがとうございました!