web-dev-qa-db-ja.com

ウィジェットの背景色を設定する

QCheckBoxQTableWidgetCellを使用します

QWidget *widget = new QWidget();
QCheckBox *checkBox = new QCheckBox();
QHBoxLayout *layout = new QHBoxLayout(widget);
layout->addWidget(checkBox);
layout->setAlignment(Qt::AlignCenter);
layout->setContentsMargins(0, 0, 0, 0);
widget->setLayout(layout);
table->setCellWidget(0, 0, widget);

セルの背景を変更するにはどうすればよいですか?

8
Ufx

コード:

widget->setStyleSheet("background-color: red");

正常に動作しますが、テーブルに追加するすべてのコンテナウィジェットのスタイルを設定する必要があります。

したがって、変更を確認するには、次のコードが必要です。

QWidget *widget = new QWidget();
widget->setStyleSheet("background-color: red");
QCheckBox *checkBox = new QCheckBox();
QHBoxLayout *layout = new QHBoxLayout(widget);
layout->addWidget(checkBox);
layout->setAlignment(Qt::AlignCenter);
layout->setContentsMargins(0, 0, 0, 0);
widget->setLayout(layout);

QWidget *widget2 = new QWidget();
widget2->setStyleSheet("background-color: red");
QCheckBox *checkBox2 = new QCheckBox();
QHBoxLayout *layout2 = new QHBoxLayout(widget2);
layout2->addWidget(checkBox2);
layout2->setAlignment(Qt::AlignCenter);
layout2->setContentsMargins(0, 0, 0, 0);
widget2->setLayout(layout);

ui->tableWidget->setCellWidget(0, 0, widget);
ui->tableWidget->setCellWidget(0, 1, widget2);

そして結果は次のようになります:

enter image description here

9
Jacob Krieg

ウィジェットではなくセルの背景を変更する場合は、setBackground()メソッドを使用します。

QCheckBox *checkBox = new QCheckBox("example");
QWidget *widget = new QWidget();
QHBoxLayout *layout = new QHBoxLayout(widget);
layout->addWidget(checkBox);
layout->setAlignment(Qt::AlignCenter);
layout->setContentsMargins(0, 0, 0, 0);
widget->setLayout(layout);
ui->tableWidget_2->setCellWidget(0,0,widget);
ui->tableWidget_2->item(0, 0)->setBackground(Qt::red);//this line should be

この場合、すべてのセルが赤になります(チェックボックスの周りに白い線はありません)。

1
Chernobyl

これを試してみてください:

checkBox->setStyleSheet("background-color: red;");

より一般的に指定する場合は、CSSにクラスタイプを記述して、階層内のどのクラスがフラグを処理するかを示します。これは次のようになります。

QWidget { background-color: red; }
1
msrd0