QT - QTablewidget

   
Vista:

QTablewidget

Publicado por Maria (2 intervenciones) el 22/09/2008 16:30:36
Hola!
Necesito rellenar un QTablewidget con un vector pero no se como se hace.¿Me puede ayudar alguien?
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:QTablewidget

Publicado por Ayose Lomba (6 intervenciones) el 24/09/2008 01:33:10
Hola María, para poder rellenar la Qtable con los valores de vector tendrás que usar la función setText que proporciona la clase QTable de QT.
Para ello tendrás que ir leyendo cada valor del vector y cargarlo en la celda que tu quieras.
Imagina que tu Qtable se denomina MyTable y que tu vector es valor por lo tanto para guardar el primer valor del mismo en tu "MyTable" usarás lo siguiente:

MyTable->setText(0,0, valor(0) );//nombre_de_tu_tabla->setText(i,j, valor ) donde i es la fila, j la columna y valor el número que quieres meter.

Ahora mismo de memoria no recuerdo si valor ha de ser un QString o no si fuese asi lo conviertes a String y listo para usar tal y como te he mencionado.

PD: Ahora mismo en mi Web hay poca info sobre como voy avanzando con las Qt pero la idea es ir plasmando mis problemas y sus soluciones a medida que avanzo. Justamente estos días estoy con una función que se encarga precisamente de llenar una Qtable así que si te es de utilidad ponte en contacto conmigo e iré publicando cositas que puedan ser de ayuda a la comunidad.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:QTablewidget

Publicado por rcruz (1 intervención) el 09/06/2009 00:44:00
Hola

Mira este ejemplo, tal vez te sirva:

QTableWidget tabla;

tabla.setRowCount(10);
tabla.setColumnCount(10);

for (int i = 0 ; i < 10 ; i++ )
for (int j = 0 ; j < 10 ; j++)
tableWidget->setItem(i , j , new QTableWidgetItem ); // creo los item

// despues de creados lo item entoces puedes escribir en la tabla

QString tmp;

for (int i = 0 ; i < 10 ; i++ )
for (int j = 0 ; j < 10 ; j++)
tableWidget->item(i , j)->setText(tmp.setNum(0.0));
// aqui se rellena la tabla con ceros

Se que esto no es muy elegante y ademas muy trabajoso pero no lo he logrado hacer de otra forma, siempre tengo que crear los item primero y luego usas un objeto QString para poner algun texto en las casillas del QTableWidget
Si encuentras una manera mas facil te agradeceria me la dijeras .......
Saludos
Roberto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:QTablewidget

Publicado por mario (1 intervención) el 05/11/2015 23:06:53
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
// Cargar la tabla -----------------------------------------------------------------------
void MainWindow::CargaTabla()
{
    // Asignar ancho a las columnas
    DimCeldas();
    // Dimensionar la tabla
    ui->Tabla->setGeometry(85,0,1120,880);
    // Presentar la tabla
    ui->Tabla->setHidden(false);
    // Asignar número de columnas a la tabla
    ui->Tabla->setColumnCount(5);
    // Asignar título a las columnas de la tabla
    QStringList l;
    l << "TITULO" << "AUTOR" << "TEMA" << "LUG." << "NUM.";
    ui->Tabla->setHorizontalHeaderLabels(l);
 
    // Número de filas 0, para no conservar datos de listados anteriores
    ui->Tabla->setRowCount(0);
 
    // Cargar datos de vectores en tabla
    for(int i=0;i<VTi.size();i++)
    {
        // Agregar nueva fila
        ui->Tabla->insertRow(ui->Tabla->rowCount());
        // Insertar datos en columnas
 
        ui->Tabla->setItem(ui->Tabla->rowCount()-1, 0, new QTableWidgetItem(VTi[i])); // Título
        ui->Tabla->setItem(ui->Tabla->rowCount()-1, 1, new QTableWidgetItem(VAu[i])); // Autor
        ui->Tabla->setItem(ui->Tabla->rowCount()-1, 2, new QTableWidgetItem(VTe[i])); // Tema
        ui->Tabla->setItem(ui->Tabla->rowCount()-1, 3, new QTableWidgetItem(VLu[i])); // Lugar
        ui->Tabla->item(i, 3)->setTextAlignment(Qt::AlignCenter);                     // Centrado
        ui->Tabla->setItem(ui->Tabla->rowCount()-1, 4, new QTableWidgetItem(VNu[i])); // Número
        ui->Tabla->item(i, 4)->setTextAlignment(Qt::AlignRight);                      // Justificado a la Derecha
    }
}
// Cargar vector------------------------------------------------------------
void MainWindow::CargaVector()
{
    VaciaVector();
    ct=1;
    // *** ABRIR EL FICHERO ***
    QByteArray dirActual;
    dirActual.append(QDir::currentPath());
 
    QByteArray rutaCompletaATexto;
    rutaCompletaATexto.append(dirActual);
    rutaCompletaATexto.append("/"); //Si usas Windows debes utilizar "\"
    rutaCompletaATexto.append("FichLib.txt");
 
    QFile file(rutaCompletaATexto);
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
        qDebug()<<"No se encuentra el archivo de texto!";
        }else{
        //Creamos la variable que contiene todo el fichero.
        QString TxFichero;
        //Creamos la variable que contiene todo el archivo.
        TxFichero.append(file.readAll());//el metodo readAll ejeculalo solo una vez por función.
 
        //Creamos una variable de Lista partiendo la variable todoeltexto por "|"
        QStringList Ficha = TxFichero.split("|");
 
        //Iniciamos Bucle for
        for(int i=0;i<Ficha.size()-1;i++){
            //Creamos la variable que contiene los datos de una ficha.
            QString DatosFich;
            //Añadimos a una columna sus datos
            DatosFich.append(Ficha.at(i));
 
            // Separamos en una lista los datos de una ficha, definidos por el signo "#"
            QStringList LisDatos  = DatosFich.split("#");
 
            //Separamos los datos de cada ficha y los asignamos a un vector
            for(int j=0;j<LisDatos.size();j++){
 
                // *** ASIGNAR DATOS A VECTORES ***
                if (j==0){
                    VTi[i].append(LisDatos.at(j)); // Título
                    }
                if (j==1){
                    VAu[i].append(LisDatos.at(j)); // Autor
                    }
                if (j==2){
                    VTe[i].append(LisDatos.at(j)); // Tema
                    }
                if (j==3){
                    VLu[i].append(LisDatos.at(j)); // Lugar
                    }
                if (j==4){
                    VNu[i].append(LisDatos.at(j)); // Número
                    }
                }
            // Redimensionar vectores
            ct = ct+1;
            RedimVector();
            }
        }
    QFile close();
 
    // Redimensionar vectores (Quitar último vacío)
    ct = ct-1;
    RedimVector();
    //v.size()
    // Asignar número del último vector para asignar número de nuevo libro automaticamente.
    UVect = ct-1;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar