2012-07-12 45 views
5

Sau đây là những gì tôi hiện đang thử. Văn bản tiêu đề thay đổi màu một cách chính xác nhưng nền sẽ không thay đổi từ mặc định.Cách thay đổi màu nền tiêu đề của một 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); 
    } 
    //... 
} 

Làm cách nào để đặt màu nền?

+0

Giá trị hằng số này - là cùng một cọ vẽ được trả về mỗi khi hàm này được gọi trên một cá thể của một mô hình? Nếu không, bạn có phát ra các tín hiệu liên quan để thông báo cho chế độ xem rằng dữ liệu tiêu đề đã thay đổi không? –

Trả lời

4

Dưới đây là một giải pháp thay thế.

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

Giải pháp này không hoạt động đối với tôi bằng cách sử dụng Qt 5.9.1, nhưng giải pháp biểu định kiểu không hoạt động! – ForeverLearning

Các vấn đề liên quan