2012-07-12 33 views
5

Lo siguiente es lo que he intentado actualmente. El texto del encabezado cambia de color correctamente pero el fondo no cambiará del predeterminado.Cómo cambiar el color de fondo del encabezado de un QTableView

template<typename T> 
inline QVariant TableModel<T>::headerData(int section, Qt::Orientation orientation, int role) const 
{ 
    //... 
    else if(role == Qt::BackgroundRole) { 
     return QBrush(m_display.headerBackground); 
    } 
    //... 
} 

¿Cómo puedo establecer el color de fondo?

+0

¿Este valor es constante? ¿Se devuelve el mismo cepillo cada vez que se llama a esta función en una instancia de un modelo? Si no, ¿está emitiendo señales relevantes para notificar a la vista que los datos del encabezado han cambiado? –

Respuesta

4

Aquí es una solución alternativa.

MyTableView::MyTableView(QWidget* parent) : QTableView(parent) 
{ 
    ... 
    // Make a copy of the current header palette. 
    QPalette palette = horizontalHeader()->palette(); 

    // Set the normal/active, background color 
    // QPalette::Background is obsolete, use QPalette::Window 
    palette.setColor(QPalette::Normal, QPalette::Window, Qt::red); 

    // Set the palette on the header. 
    horizontalHeader()->setPalette(palette); 
} 
+0

Esta solución no funciona para mí usando Qt 5.9.1, ¡pero la solución de hoja de estilos sí! – ForeverLearning

Cuestiones relacionadas