将样式表设置为QListWidgetItem后,QListWidgetItem上的SetBackGround不再起作用

时间:2013-09-20 14:39:29

标签: qt

我正在尝试用QListWidgetItems创建一个QListWidget。 我希望QListWidgetItems有一个边框和一个背景,例如绿色。 所选项目应具有另一个背景,例如红色。 我试图用样式表创建边框。这很好用。 但我无法再设置项目的单独背景颜色。

我正在使用的代码

QListWidget *listWidget = new QListWidget();
QListWidgetItem *wi = new QListWidgetItem;
wi->setText("greenbg");
wi->setBackgroundColor(Qt::green);
listWidget->addItem(wi);

listWidget->setStyleSheet( "QListWidget::item {border-style: solid; border-width:1px; border-color:black;}");

QListWidgetItem *wi2 = new QListWidgetItem;
wi2->setText("redbg");
wi2->setBackgroundColor(Qt::red);
listWidget->addItem(wi2);
listWidget->show;

这显示列表透明。删除setStyleSheet行时,项目为绿色和红色。 我做错了什么或不可能,我应该使用自定义Widget吗?

1 个答案:

答案 0 :(得分:4)

CSS会覆盖您在那里设置的值。尝试在CSS中设置背景颜色:

listWidget->setStyleSheet( 
  "QListWidget::item {"
     "border-style: solid;" 
     "border-width:1px;" 
     "border-color:black;" 
     "background-color: green;"
  "}"
  "QListWidget::item:selected {"
     "background-color: red;"
  "}");

请注意,您可以为不同的状态指定不同的样式(即选择该项目)。

示例和其他信息here