2012-07-12 17 views
5

Oto, co obecnie próbowałem. Tekst nagłówka zmienia się prawidłowo, ale tło nie zmieni się domyślnie.Jak zmienić kolor tła nagłówka 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); 
    } 
    //... 
} 

Jak ustawić kolor tła?

+0

Czy ta wartość jest stała - czy ten sam pędzel jest zwracany za każdym razem, gdy funkcja jest wywoływana w instancji modelu? Jeśli nie, czy emitujesz odpowiednie sygnały, aby powiadomić o zmianie danych nagłówka? –

Odpowiedz

4

Oto alternatywne rozwiązanie.

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

To rozwiązanie nie działa dla mnie przy użyciu Qt 5.9.1, ale rozwiązanie arkusza stylów działa! – ForeverLearning

Powiązane problemy