2

QFileSystemModelを拡張して、テキスト/アイコンで新しい列を追加できますか?

よろしく

4

1 に答える 1

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);
   }
}

公式ドキュメントでは、抽象アイテムモデルの最小限の再実装に関するいくつかの基礎について概説していますが、この場合、はるかに少ないコストで逃げることができます。 http://doc.qt.digia.com/stable/qabstractitemmodel.html-サブクラス化セクション。

于 2013-02-19T17:36:15.180 に答える