he un QTableWidget que poblar como esto:Strange QTableWidget - no todas las células pobladas después de la clasificación seguido por repoblar
// Clear the table
this->topPatchesTableWidget->setRowCount(0);
this->topPatchesTableWidget->setRowCount(numberToDisplay);
for(unsigned int pairId = 0; pairId < numberToDisplay; ++pairId)
{
// Display patch match scores
QTableWidgetItem* myLabel = new QTableWidgetItem;
myLabel->setData(Qt::DisplayRole, myValues[pairId]);
this->tableWidget->setItem(pairId, 0, myLabel);
... fill other columns ...
}
(Tengo algunos otros elementos de interfaz de usuario para establecer las propiedades que calculan los valores en myValues) . Si cambio las propiedades, recalculo y vuelvo a crear la tabla, todo funciona como se espera. Si clasifico la tabla haciendo clic en uno de los encabezados, ordena correctamente. SIN EMBARGO, si en este momento (después de la clasificación) hago clic en mi botón nuevamente para volver a calcular los valores y recrear la tabla, la tabla está muy rota. Es decir, muchas de las celdas están vacías y las celdas que no están vacías no parecen estar en un orden particular.
Mediante la adición de una llamada manual para
this->tableWidget->sortByColumn(0, Qt::AscendingOrder);
al comienzo de mi función CreateTable, todo funciona como se esperaba, pero por supuesto la tabla recién creada se ordena por la columna 0 en lugar de la columna que se seleccionó para el último tipo.
¿Alguien tiene alguna idea de por qué las cosas irían tan mal sin la llamada a sortByColumn? (Traté de hacer un ejemplo simple pero no puedo replicar el problema en un programa de demostración).
Gracias,
David
Éste funcionó y creo que debería ser la respuesta a esta pregunta. Probado en QTableWidget usando PyQt4. – ray