Всем привет. Например есть QTableView с уже загруженной моделью.
1) Вариант. Не сортирую ничего.
C++ (Qt)
QSqlQueryModel* myModel = new QSqlQueryModel(this);
myModel = (QSqlQueryModel*)view->model();
QString lastQuery = myModel()->query()->lastQuery();
int nof = myModel->record(0).count();
Все работает. lastQuery - не пустая.
2) Сортировка посредством mySortModel.
MySortModel.cpp
C++ (Qt)
#include "mysortmodel.h"
MySortModel::MySortModel(QObject *parent) :
QSortFilterProxyModel(parent)
{
}
bool MySortModel::lessThan(const QModelIndex &left, const QModelIndex &right) const
{
QVariant leftData = sourceModel()->data(left);
QVariant rightData = sourceModel()->data(right);
if (leftData.canConvert(QVariant::Double))
{
bool ok1 = false;
double a = leftData.toDouble(&ok1);
double b = rightData.toDouble();
if (ok1)
return a < b;
}
if (leftData.canConvert(QVariant::String))
return QString::localeAwareCompare(leftData.toString(), rightData.toString()) < 0;
}
MySortModel::~MySortModel()
{
qDebug() << "Mysort model destructor";
}
Собственно сортировка.
C++ (Qt)
void QDbfReader::sort(int index)
{
proxyModel->setSourceModel(model);
view->setModel(proxyModel);
if (!proxyModel->sortOrder() == Qt::AscendingOrder)
proxyModel->sort(index, Qt::DescendingOrder);
else proxyModel->sort(index, Qt::AscendingOrder);
}
//где model = QSqlQueryModel, proxyModel = MySortModel;
Обращение -
C++ (Qt)
QSqlQueryModel* myModel = new QSqlQueryModel(this);
myModel = (QSqlQueryModel*)view->model();
int nof = myModel->record(0).count();
QString lastQuery = myModel()->query()->lastQuery();
НЕ работает.На определении nof вылетает. lastQuery - пустая.
В чем тут дело? Не могу никак понять! Заранее спасибо.