2016-08-17 56 views
-1

我想在QTreeView的特定单元格中显示QComboBox。我知道我必须使用自己的模型。整个事情已经在单元格中显示的QIcons中正常工作,但我没有对组合框执行相同的操作。这就是我的模型看起来像(一些不完整的伪代码):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'包一个(虽然你可以存储指向一个)。 –

回答

2

不,模型仅用于视图中的数据句柄,而不用于更改视图。 你需要学习和使用: QItemDelegate(抱歉,因为没有在这里向你展示所有的代码,它需要地点和时间...你可能需要阅读tuto和相关文档......希望有帮助)

tuto for QItemDelegate

QItemDelegate API class Qt5