4

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 行が削除されると、項目は緑と赤になります。何が間違っているのですか、それとも不可能ですか?カスタムウィジェットを使用する必要がありますか?

4

1 に答える 1

8

CSS は、そこで設定した値をオーバーライドしています。CSSでも背景色を設定してみてください:

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

異なる状態 (つまり、アイテムが選択されている) に対して異なるスタイルを指定できることに注意してください。

例とその他の情報はこちら.

于 2013-09-20T15:19:39.357 に答える