Qt 5.8 QTableView标头颜色不会更改

时间:2019-05-02 04:52:21

标签: qt

我似乎无法在QTableView中获得Header的颜色。我尝试了很多不同的方法,但是似乎都没有。我可以帮忙。

这是我的代码:

tableView = new QTableView;
tableView->setStyleSheet("color: rgb(255, 0, 0);"
                         "border: 1px solid rgb(255, 0, 0);"
                         "gridline-color: rgb(255, 0, 0);"
                         "background-color: rgba(0, 0, 0, 0);"
                         "QHeaderView::section { background-color:black }");

我愿意接受任何想法吗?

3 个答案:

答案 0 :(得分:0)

我不知道可以在样式表的上下文中用于包含视图的任何QHeaderView::section指令(例如QTableViewQListView等)。我认为您需要显式设置QHeaderView样式表...

tableView = new QTableView;
tableView->setStyleSheet("color: rgb(255, 0, 0);"
                     "border: 1px solid rgb(255, 0, 0);"
                     "gridline-color: rgb(255, 0, 0);"
                     "background-color: rgba(0, 0, 0, 0);");
tableView->horizontalHeader()->setStyleSheet("background-color: black;");

答案 1 :(得分:0)

您的代码没有错。根据官方文档,它必须正常工作。

QSS HeaderView指令定义了QHeaderView类的属性:

tableView->setStyleSheet("QHeaderView::section { 
    background-color: red;
    color: white;
    border: 1px solid #6c6c6c;
}");

或者,您可以直接修改QHeaderView部分的属性:

tableView->horizontalHeader()->setStyleSheet("::section { 
    background-color: red;
    color: white;
    border: 1px solid #6c6c6c;
}");

如果要更改整个标题的背景,请使用:

tableView->horizontalHeader()->setStyleSheet("background-color: black;");

答案 2 :(得分:0)

这个问题的答案在其他答案中,但是它们还包含误导性代码(无论如何,在我的机器上:Win7x64)。

这是行之有效的,而哪些行不通(再次对我而言)。

此代码对标题无任何作用:

tableView->horizontalHeader()->setStyleSheet("background-color: black;");

此代码有效,但也更改了整个QTableView小部件的边框:

tableView->setStyleSheet("QHeaderView::section { 
    background-color: red;
    color: white;
    border: 1px solid #6c6c6c;
}");

此代码按预期工作:

tableView->horizontalHeader()->setStyleSheet("QHeaderView::section { background-color: rgb(40, 0, 0) }");

此代码也有效,是上述代码的变体:

tableView->horizontalHeader()->setStyleSheet("::section { background-color: rgb(40, 0, 0) }");