2016-08-17 4 views
-1

Ich möchte eine QComboBox innerhalb bestimmter Zellen eines QTreeView zeigen. Ich weiß, dass ich ein eigenes Modell dafür verwenden muss. Die ganze Sache funktioniert bereits richtig mit QIcons, die in der Zelle gezeigt werden, aber ich scheitere das Gleiche mit einer Combobox. Das ist, was mein Modell aussieht (einige unvollständige Pseudo-Code):QComboBox in QTreeView-Zelle

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: 

Sobald ich versuche, eine QComboBox zurückzukehren, ich einen Kompilierungsfehler erhalten

cannot convert from 'const QComboBox' to 'QVariant' 

MyListModel von QAbstractListModel erbt.

Irgendeine Idee, was ich tun muss, um eine QComboBox anstelle eines dummen Symbols zu verwenden?

Danke!

+0

Sie können eine 'QObject' kopieren nicht zurück (oder verschieben), und man kann nicht eine in einem' QVariant' wickeln (auch wenn Sie einen Zeiger auf eine speichern kann). –

Antwort

2

Nein, das Modell ist nur für das Datenhandle in einer Ansicht gedacht und nicht für die Änderung der Ansicht. Sie müssen lernen und verwenden: QItemDelegate (Entschuldigung für nicht zeigen Sie hier den ganzen Code, es braucht Ort und Zeit dafür ... die Zeit müssen Sie Tuto und relative doc lesen ... hoffe, dass die Hilfe)

tuto for QItemDelegate

QItemDelegate API class Qt5