QTreeView-cell中的QComboBox

时间:2016-08-17 06:48:39

标签: c++ qt qt5 qcombobox qabstractlistmodel

我想在QTreeView的特定单元格中显示QComboBox。我知道我必须使用自己的模型。整个事情已经与单元格中显示的QIcons一起正常工作,但我对组合框没有做同样的事情。这就是我的模型看起来的样子(一些不完整的伪代码):

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而不是愚蠢的图标?

谢谢!

1 个答案:

答案 0 :(得分:2)

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

tuto for QItemDelegate

QItemDelegate API class Qt5