2

QStandardItemModel特定の列のアイテムをアルファベット順に並べ替えようとしています。このために、私はから派生したクラスを使用しており、メソッドをそのようQSortFilterProxyModelに再実装していますlessThan

bool MyProxy::lessThan(const QModelIndex &left, const QModelIndex &right) const
    {

        QVariant leftData = sourceModel()->data(left);
        QVariant rightData = sourceModel()->data(right);

        if( left.column() == 1)
        {
            return leftData.toString() < rightData.toString();
        }

        return false;
    }

モデルをプロキシモデルにアタッチする方法は次のとおりです

MyStandardItemModel=new QStandardItemModel();
MyProxy= new MyProxy();

MyProxy->setSourceModel(pModelContacts);
ui.ContactView->setModel(MyProxy);

モデルにアイテムを追加した後、ここで並べ替えを行います

MyProxy->sort(1); 

ただし、列はソートされて表示されません。助言がありますか?

4

1 に答える 1