第一种写法:

ui->tableWidget->setStyleSheet("QTableWidget{color:red;}"
                               "QTableWidget::item{color:green;}"
                               "QLabel{color:blue;}");

上述设置中,第一行的“QTableWidget{color:red;}”是对表格内的所有子控件的颜色设置,也就是说,当没有指定item的样式和QLabel的样式时,QTableWidgetItem和QLabel的颜色会显示为red。
第二行的“QTableWidget::item{color:green;}”是针对于QTableWidgetItem设置的,如果表格中有QTableWidgetItem,那么item的颜色就是green,而不是red,颜色会进行覆盖;如果没有指定item的样式,那么item的颜色就是red。
第三行的“QLabel{color:blue;}”就是针对于插入到QTableWidget中的QLabel控件而言的,如果表格中某个单元格中插入的是一个QLabel对象(或者插入的是一个QWidget对象,但QWidget对象里嵌入了一个QLabel对象),那么QLabel的字体颜色就是blue,如果没有添加“QLabel{color:blue;}”,那么插入的QLabel控件的字体颜色就是red。
样式的先后顺序对执行的结果是没有影响的,比如你写成下面的形式,效果也是一样的。

第二种写法:

ui->tableWidget->setStyleSheet("QTableWidget::item{color:green;}"
    "QLabel{color:blue;}"
    "QTableWidget{color:red;}");

第三种写法(错误写法示例):

ui->tableWidget->setStyleSheet("color:red;"
                               "QTableWidget::item{color:green;}"
                               "QLabel{color:blue;}");

上面的写法是不正确的写法,“color:red;”会导致后面的选择器的样式解析失败,如果想改成正确的,可以改成下面的形式:

ui->tableWidget->setStyleSheet("QTableWidget::item{color:green;}"
    "QLabel{color:blue;}"
    "color:red;");
最后修改:2025 年 08 月 16 日
如果觉得我的文章对你有用,请随意赞赏