tableView_clicked does not respect the order of the data

0
void MainWindow::on_**tableView_clicked**(const QModelIndex &index)
{
    if(!index.isValid()){
        return;
    }
    btnEdit->setEnabled(true);
    btnDelete->setEnabled(true);
    btnSave->setEnabled(true);
    btnImg->setEnabled(true);




    QString id=mModel->data(mModel->index(index.row(),0)).toString();

    QSqlQuery q;
    q.exec("SELECT id_elemento, id_grupo, id_tipo, nombre, descripcion, icono FROM elemento WHERE id_elemento= '" + id +"';");

    qDebug()<<id;
    q.first();
    qDebug() << q.lastError();
    lineCod->setText(q.value(0).toString());
    lineGroup->setText(q.value(1).toString());
    lineType->setText(q.value(2).toString());
    lineName->setText(q.value(3).toString());
    textDescription->setPlainText(q.value(4).toString());


    lineImg->setText(q.value(5).toByteArray());



    QPixmap pixmap;
    if(!pixmap.loadFromData(q.value(5).toByteArray())){
        labelImg->setText("<b>Error de Imagen</b>");
        return;
    }
    labelImg->setScaledContents(true);
    int w = labelImg->width();
    int h = labelImg->height();

    w=200;
    h=100;

    labelImg->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
    labelImg->setAlignment(Qt::AlignCenter);
    labelImg->setPixmap(pixmap.scaled(w,h,Qt::KeepAspectRatio));




}




   void MainWindow::on_btnCargar_clicked()

{

    mModel=new QSqlQueryModel(this);
    mModel->setQuery("SELECT id,grupo,tipo,nombre,descripcion from vertical ORDER BY id;");


    mModel->setHeaderData(0,Qt::Horizontal,tr("ID"));
    mModel->setHeaderData(1,Qt::Horizontal,tr("GRUPO"));
    mModel->setHeaderData(2,Qt::Horizontal,tr("TIPO"));
    mModel->setHeaderData(3,Qt::Horizontal,tr("NOMBRE"));
    mModel->setHeaderData(4,Qt::Horizontal,tr("DESCRIPCIÓN"));


    tableView->setModel(mModel);

    tableView->resizeColumnsToContents();
    tableView->setSortingEnabled(true);
    proxy = new QSortFilterProxyModel(this);
    proxy->setSourceModel(mModel);
    tableView->setModel(proxy);

    tableView->show();

}

Everything works, the problem is that when I order it through one of the columns with the code

tableView->setSortingEnabled(true);
proxy = new QSortFilterProxyModel(this);
proxy->setSourceModel(mModel);
tableView->setModel(proxy); 

The one that I select to show does not correspond to the one that shows the table, that is, it does not take into account the previously selected order

    
asked by Antonio Veloso Gomez 30.05.2017 в 10:05
source

1 answer

1

Fix it, I have to use proxy instead of mModel in the tableView_clicked

QString id=mModel->data(mModel->index(index.row(),0)).toString();
QString id=proxy->data(proxy->index(index.row(),0)).toString();
    
answered by 30.05.2017 / 10:17
source