0

私はいくつかのデータを持っています、例

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;

多分誰かがすでにこの問題を解決しましたか?

ありがとうございました!

4

0 に答える 0