It does not work if I do not put the manual image because?

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);
    tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
    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_toolButton_clicked()
{
    imagenAdr=QFileDialog::getOpenFileName(this,"Escojer Icono",QDir::rootPath(),"*png");
    QFile archivo(imagenAdr);
    if(!archivo.open(QIODevice::ReadOnly)){
        QMessageBox::critical(this,"Error",archivo.errorString());
        return;
    }
    lineImg->setText(imagenAdr);

    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(QPixmap(imagenAdr).scaled(w,h,Qt::KeepAspectRatio));



}

void MainWindow::on_btnEdit_clicked()

{



    QFile archivo(lineImg->text());
    if(!archivo.open(QIODevice::ReadOnly)){
        QMessageBox::critical(this,"Error",archivo.errorString());

        return;
    }



    mElemento=Elemento(lineCod->text(),(lineGroup->text()).toInt(),(lineType->text()).toInt(),
                       lineName->text(),textDescription->toPlainText(),archivo.readAll());

    QMessageBox::StandardButton reply;
    reply=QMessageBox::question(this,"Cancelar",
                                "¿Está seguro de que desea actualizar el valor de el elemento especificado de la base de datos?",
                                QMessageBox::Yes | QMessageBox::No);
    if(reply==QMessageBox::No){
        QMessageBox::information(this,"Cancelado","Ha cancelado la actualización del elemento");
    }

    if(reply==QMessageBox::Yes){
        QMessageBox::information(this,"Aprobado","Ha actualizado el elemento");
        if(!elem->editarElemento(mElemento)){

            return;
        }



    archivo.close();

      cargar();
      btnSave->setEnabled(true);
      btnDelete->setEnabled(true);
      btnImg->setEnabled(true);
      btnEdit->setEnabled(true);
    }
}

bool Elemento::editarElemento( Elemento &elemento)
{
    QString id=elemento.idElemento();
    int gru=elemento.idGrupo();
    int tip=elemento.idTipo();
    QString nom=elemento.nombre();
    QString des=elemento.descripcion();
    QByteArray icono=elemento.icono();


QSqlQuery q;
        q.prepare("UPDATE elemento SET id_elemento=:id, id_grupo=:grupo, id_tipo=:tipo,  nombre=:nombre, descripcion=:descripcion, icono=:icono WHERE id_elemento='"+id+"';");
        q.bindValue(":id", id);
        q.bindValue(":grupo",gru);
        q.bindValue(":tipo", tip);
        q.bindValue(":nombre",nom);
        q.bindValue(":descripcion", des);
        q.bindValue(":icono",icono);

        q.exec();


    bool ok=q.exec();
    if(!ok){

      QSqlError mError=q.lastError().text();
      qDebug()<<mError;


    }
    return ok;



}

Summary- > If I take the image out of the table it gives me an error when editing, but if I manually insert it everything works perfectly. I guess when loading the lineImg from the table something is wrong.

    
asked by Antonio Veloso Gomez 26.05.2017 в 12:57
source

0 answers