QtableView no muestra los resultados pero los recibe



  • Buenos dias, tengo una consulta que hago con MySql, no tengo problemas de conexion, pues la pruebo en otra instancia sin inconvenientes.
    Hago una consulta para buscar unos datos y en QTable aparecen las filas y columnas del resultado pero no se ve nada. inclusive si son 10 los registros que cumplen la condicion uno puede ver que se generan 10 filas con sus columnas, pero sin ver los contenidos. No cambie los StyleSheet. Aqui el codigo

    ...

    QSqlQuery query(ConsultaMysql);

        ui->t_afiliados->setColumnCount(query.record().count());
        ui->t_afiliados->setRowCount(query.size());
        ui->t_afiliados->setHorizontalHeaderLabels(QString("Carnet;Afiliado;Documento;Edad;Estado;Condicion").split(";"));
        ui->t_afiliados->setEditTriggers(QAbstractItemView::NoEditTriggers);
        ui->t_afiliados->setSelectionBehavior(QAbstractItemView::SelectRows);
        ui->t_afiliados->setSelectionMode(QAbstractItemView::SingleSelection);
        ui->t_afiliados->setStyleSheet("QTableView {selection-background-color: lightred;}");
        ui->t_afiliados->verticalHeader()->setVisible(true);
    
        ui->t_afiliados->setColumnWidth(0,50);
        ui->t_afiliados->setColumnWidth(1,250);
        ui->t_afiliados->setColumnWidth(2,50);
        ui->t_afiliados->setColumnWidth(3,50);
        ui->t_afiliados->setColumnWidth(4,50);
        ui->t_afiliados->setColumnWidth(5,50);


  • Ya resolvi el problema, faltaba cargar los datos puntualmente. el codigo que añadi es el siguiente:

    int index=0;
        while (query.next())
        {
            ui->t_afiliados->setItem(index,0,new QTableWidgetItem(query.value(0).toString()));
            ui->t_afiliados->setItem(index,1,new QTableWidgetItem(query.value(1).toString()));
            ui->t_afiliados->setItem(index,2,new QTableWidgetItem(query.value(2).toString()));
            ui->t_afiliados->setItem(index,3,new QTableWidgetItem(query.value(3).toString()));
            ui->t_afiliados->setItem(index,4,new QTableWidgetItem(query.value(4).toString()));
            ui->t_afiliados->setItem(index,5,new QTableWidgetItem(query.value(5).toString()));
            index++;
        }

  • Moderators

    Hola

    ¿Y por qué no usas un modelo? Depende de la consulta y lo que quieras hacer, un modelo puede facilitarte las cosas, ya que no tienes que encargarte de mostrar tu los datos, simplemente asocias el modelo con el QTableView y listo.

    Si quieres modificar la forma en la que se muestran los datos usas un delegate y puedes darle la apariencia que quieras muy fácilmente.

    Un saludo


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.