Qt - 如何自定义QTableWidget的复选框

时间:2015-06-08 12:10:41

标签: c++ qt checkbox qtablewidget qcheckbox

我试图为Qt的复选框设置一些样式。我已经知道QtTableWidget有QCheckbox。但问题是我不知道如何为QtTableWidget的复选框设置样式。

QTableWidgetItem *checkBoxItem = new QTableWidgetItem();
checkBoxItem->setCheckState(Qt::Unchecked);
table->setItem(row, column, checkBoxItem);

当我为checkBox使用setStyleSheet时:

checkBoxItem->setStyleSheet("...");

我有一个错误: ' class QTableWidgetItem'没有名为' setStyleSheet' 的成员

已编辑:我想用checkBox进行一些操作。这是第一个QTableWidgetItem的完整代码:

for (int i = 0; i < 4; ++i)
    m_tableWidget->setRowHeight(i, 3 * em);


QTableWidgetItem *item1 = new QTableWidgetItem(tr("Show Message Preview"));

if (CGlobalZone::m_showMsgPreview)
    item1->setCheckState(Qt::Checked);

else
    item1->setCheckState(Qt::Unchecked);

item1->setFlags(Qt::ItemIsEnabled);
m_tableWidget->setItem(0, 0, item1);



enter image description here

2 个答案:

答案 0 :(得分:2)

您可以使用QAbstractItemView :: indicator {...}设置指标的样式(例如QTableView :: indicator:checked,QTableView :: indicator:unchecked等)。

您无法直接将样式应用于QTableItemWidget,但您可以在QTableWidget本身或其父项上添加样式表。

答案 1 :(得分:0)

假设您已经拥有一个至少包含一列且至少有一行的表格小部件:

QCheckBox *cb = new QCheckBox(tr("Check me"));
cb->setStyleSheet("background-color: rgb(0, 85, 0);");
tableWidget->setCellWidget(0, 0, cb);