2011-02-18 13 views
5

Sé que puede recorrer los QTableWidgetItems y cambiar sus colores, pero, ¿qué sucede si he usado setCellWidget y tengo celdas que no son QTableWidgetItems? No puedo encontrar un método simple setRowColor. Parece que debería haber, ya que hay métodos para alternar el color de la fila y otras cosas. ¿Hay una manera simple de hacer esto sin subclasificar el delegado de la tabla?¿Hay una forma simple de cambiar el color de fondo de la fila en un QTableWidget?

Pregunta retórica: Solo quiero cambiar el color de la fila, ¿realmente debería necesitar una nueva clase para eso?

Respuesta

3

Usted puede agregar una hoja de estilo a su algo QTableWidget así:

QTableWidget::item { 
    background-color: rgb(255, 85, 127); 
} 

Es posible ajustar esta es código, así como sigue:

QString _CustomStyle = QString(
     "QTableWidget::item {" 
     "background-color: rgba(162, 186, 60);" 
     "}"; 
tableWidget->setStyleSheet(_CustomStyle); 

Use su propio color RGB (obviamente) .

+0

Gracias. Pero, en realidad estoy buscando establecer el color de una fila individual. Creo que su sugerencia colorearía toda una tabla. – Gagege

+0

Terminé usando CSS, así que lo marcaré como aceptado, pero solo sé que solo necesito colorear una sola fila. ¡Muchas gracias! – Gagege

5

Creo con QTableWidget la más fácil manera de fila ajuste de color haría para recorrer los elementos de widgets y utilizar setData método para especificar el color de fondo, ver un ejemplo a continuación

for (int column=0; column<4; column++) 
{ 
    for (int row = 0; row<5; row++) 
    { 
     QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg((row+1)*(column+1))); 
     newItem->setData(Qt::BackgroundRole, (row%2)>0 ? Qt::red : Qt::blue); 
     ui->tableWidget->setItem(row, column, newItem); 
    } 
} 

si quiere hacerlo más simple, considere usar el widget QTableView en su lugar, implemente su modelo (supongo que la forma más fácil es la subclase QStandardItemModel) y mantenga los colores de fila allí. Implemente un método setRowColor y/o un espacio para especificar el color para sus filas de datos.

espero que esto ayude, saludos

+1

Gracias, pero lo que estoy buscando es una manera de establecer el fondo de una celda cuando he usado setCellWidget para poner un widget en la celda. ¿Hay alguna forma de hacer esto? – Gagege

Cuestiones relacionadas