Установить цвет фона виджета

Я использую QCheckBox на QTableWidgetCell

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);

как я могу изменить фон ячейки?

3 ответов


код:

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


вы должны попробовать это:

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

Если вы хотите указать это в целом, написать classtype в CSS, чтобы указать, какой класс в иерархии должны справиться с флагом. Это может выглядеть примерно так:

QWidget { background-color: red; }

Если вы хотите изменить фон ячейки, а не виджет, используйте 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

в этом случае вся ваша ячейка будет Красной (без белых линий вокруг флажка).