QT-将自己的列添加到QFileSystemModel

Dib*_*ibo 2 qt

我可以扩展QFileSystemModel并添加带有文本/图标的新列吗?

问候

ell*_*ial 5

我将从模型的子类化开始,提供额外的列并向其提供数据。

因此,至少在两种情况下,我都将重新实现columnCount()和data(),以调用基类并相应地操纵结果。

class yourSystemModel : public QFileSystemModel
{
    Q_OBJECT

    int columnCount(const QModelIndex& parent = QModelIndex()) const
    {
        return QFileSystemModel::columnCount()+1;
    }

    QVariant data(const QModelIndex& index,int role) const
    {
       if(!index.isValid()){return QFileSystemModel::data(index,role);}
       if(index.column()==columnCount()-1)
       {
           switch(role)
           {
              case(Qt::DisplayRole):
                  {return QString("YourText");}
              case(Qt::TextAlignmentRole):
                  {return Qt::AlignHCenter}
              default:{}
           }
       }
       return QFileSystemModel::data(index,role);
   }
}
Run Code Online (Sandbox Code Playgroud)

官方文档概述了有关抽象项目模型的最少重新实现的一些基础,但是在这种情况下,您可以花更少的钱就可以逃脱。 http://doc.qt.digia.com/stable/qabstractitemmodel.html-子类别化部分。