2016-08-17 22 views
-1

QTreeViewの特定のセル内にQComboBoxを表示したいと思います。私はそれのために独自のモデルを使用しなければならないことを知っています。セル内に表示されているQIconですべてが正しく動作していますが、コンボボックスでも同じことをすることはできません。それは私のモデルは(いくつかの不完全な擬似コード)のようになります。 QTreeView-cellのQComboBox

QVariant MyListModel::data(const QModelIndex &index, int role) const 
{ 
    ... 

    switch(role) 
    { 
     ... 
     case Qt::DecorationRole: 
     switch(index.column()) 
     { 
      case eBLA: 
       // return QIcon(); --> compiles properly 
       return m_placePosCombos[index.row()]; --> compilation fails 
       return QComboBox(); --> compilation fails 
       break; 
      default: 

はできるだけ早く私はQComboBoxを返却しようとして、私は

cannot convert from 'const QComboBox' to 'QVariant' 

MyListModelがQAbstractListModelから継承コンパイル・エラーが発生します。

私は愚かなアイコンの代わりにQComboBoxを使用するために何をしなければならないと思いますか?

ありがとうございます!

+0

あなたは 'コピーによってQObject'(または移動)を返すことができない、あなたは' QVariant'(あなたは1へのポインタを格納することができますが)1つをラップすることはできません。 –

答えて

2

モデルはビュー内のデータハンドル用であり、ビューを変更するためのものではありません。 あなたは学び、使用する必要があります: QItemDelegate(すべてのコードをここに表示しないで申し訳ありません、それは時間と場所を必要とします...あなたはtutoと相対的なdocを読む必要があるかもしれない時...

tuto for QItemDelegate

QItemDelegate API class Qt5

関連する問題