在使用 setCellWidget()
函数之前,需要先使用 QTableWidget
的 item()
函数获取指定单元格的 QTableWidgetItem 对象。这是因为 setCellWidget()
只能将一个 QWidget 添加到单元格中,并且会替换原始的 QTableWidgetItem。
如果您想在单元格中添加自定义控件并保留 QTableWidgetItem 的其他属性(如文本、字体、颜色等),则需要先获取该单元格的 QTableWidgetItem,然后将其转换为具有相应属性的自定义小部件。最后,将自定义小部件添加到单元格中。
例如,以下代码将创建一个具有特定文本和颜色的标签,并将其添加到第一行和第二列的单元格中:
QTableWidgetItem *item = m_tableWidget->item(0, 1);
QString text = item->text();
QColor color = item->background().color();
QLabel *label = new QLabel(text);
label->setStyleSheet(QString("background-color: %1").arg(color.name()));
m_tableWidget->setCellWidget(0, 1, label);
请注意,此代码首先使用 item()
函数获取第一行和第二列的 QTableWidgetItem 对象。然后,它从该对象中提取文本和颜色信息,并使用这些信息创建一个 QLabel 控件。最后,使用 setCellWidget()
将该控件添加到指定单元格中。
通过这种方式,您可以在不完全覆盖原始 QTableWidgetItem 属性的情况下,在表格中添加自定义控件。