2012-07-12 15 views
5

Quanto segue è quello che ho provato al momento. Il testo dell'intestazione cambia colore correttamente, ma lo sfondo non cambierà rispetto al valore predefinito.Come cambiare il colore di sfondo dell'intestazione di una 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); 
    } 
    //... 
} 

Come posso impostare il colore di sfondo?

+0

Questo valore è costante - lo stesso pennello viene restituito ogni volta che questa funzione viene mai chiamata su un'istanza di un modello? In caso contrario, stai emettendo segnali rilevanti per notificare alla vista che i dati dell'intestazione sono cambiati? –

risposta

4

Ecco una soluzione 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

Questa soluzione non funziona per me usando Qt 5.9.1, ma la soluzione per fogli di stile! – ForeverLearning

Problemi correlati