Probelma con "Sorting" en qml TableView
-
hola que tal, necesito crear una integración entre qt y qml, donde por medio de qt pida información a un servidor, cree un modelo en qt, agregue la información y la mande a un tableview en qml.
Hasta aquí todo esta bien, pero necesito agregar q con el QSortFilterProxyModel, pueda ordenar la información. la mayoria de los ejemplos que he visto crean widgets, pero yo necesito que este tableview se encuentre dentro de una ventana completa de qml, en este objeto de qml no he visto opciones como setSortingEnable o algo para ordenar la información, y he utilizado el comando model->sort(1, Qt:AscendingOrder) pero no veo ningun cambio en el tableview de qmlSimMainWindow.cpp
@#include "SimMainWindow.h"
#include "TurnDisplayTable.h"
#include "TurnDisplayItem.h"
#include <QtQml>
#include <QGraphicsObject>
#include <QDebug>
#include <QDeclarativeView>
#include <QQuickView>
#include <QQmlApplicationEngine>
#include <QtWidgets>
#include <QMainWindow>
#include <tablemodel.h>
#include <QSortFilterProxyModel>SimMainWindow::SimMainWindow(int argc, char **argv): QGuiApplication(argc, argv), view()
{
qDebug() << "begin"; ///////////////////////////////qmlRegisterType<TurnDisplayTable>("TurnDisplayTable", 1,0, "TurnDisplayTable");
filesModel= new TurnDisplayTable();
view.rootContext()->setContextProperty("idFilesModel", filesModel);
proxyModel = new QSortFilterProxyModel(this);
proxyModel->setSourceModel(filesModel);
proxyModel->sort(1, Qt::AscendingOrder);view.rootContext()->setContextProperty("pModel", proxyModel);
view.setSource( QUrl::fromLocalFile("./ui/main.qml") );
QObject::connect((QObject*)view.rootObject(), SIGNAL(refreshMsg()), this, SLOT(refreshHome()));
QObject::connect((QObject*)view.rootObject(), SIGNAL(changeMsg()), this, SLOT(changeHome()));
QObject::connect((QObject*)view.rootObject(), SIGNAL(sortMsg()), this, SLOT(sortHome()));
QObject::connect((QObject*)view.rootObject(), SIGNAL(infoMsg(QString, QString)), this, SLOT(infoHome(QString, QString)));view.show();
qDebug() << "end"; ///////////////////////////////
}SimMainWindow::~SimMainWindow()
{}void SimMainWindow::refreshHome()
{
qDebug() << "refresh";
QList<TurnDisplayItem> list;
QString turn = "2";
QString date = "septiembre";
TurnDisplayItem item(turn, date);
list << item;turn = "4";
date = "mayo";
TurnDisplayItem item2(turn, date);
list << item2;turn = "1";
date = "julio";
TurnDisplayItem item3(turn, date);
list << item3;turn = "3";
date = "abril";
TurnDisplayItem item4(turn, date);
list << item4;turn = "2";
date = "mayo";
TurnDisplayItem item5(turn, date);
list << item5;filesModel->setCurrencyMap(list);
proxyModel->setSourceModel(filesModel);
proxyModel->sort(1, Qt::AscendingOrder);
}void SimMainWindow::changeHome()
{
qDebug() << "cambio";
QList<TurnDisplayItem> list;
QString turn = "3";
QString date = "sep";
TurnDisplayItem item(turn, date);
list << item;turn = "1";
date = "may";
TurnDisplayItem item2(turn, date);
list << item2;turn = "2";
date = "jul";
TurnDisplayItem item3(turn, date);
list << item3;turn = "6";
date = "abr";
TurnDisplayItem item4(turn, date);
list << item4;turn = "9";
date = "oct";
TurnDisplayItem item5(turn, date);
list << item5;filesModel->setCurrencyMap(list);
}void SimMainWindow::sortHome()
{
proxyModel->sort(0, Qt::AscendingOrder);
view.rootContext()->setContextProperty("pModel", proxyModel);
qDebug()<< "sort...";
view.show();
}void SimMainWindow::infoHome(const QString &turnH, const QString &dateH)
{
qDebug() << "info";
QList<TurnDisplayItem> list;
QString turn = turnH;
QString date = dateH;
TurnDisplayItem item(turn, date);
list << item;filesModel->setCurrencyMap(list);
}
@