每个 QTableWidgetItem 的 QTableWidget 样式

QTableWidget style per QTableWidgetItem

我正在使用一个简单的 QTableWidget 来显示一些 QTableWidgetItems,看起来像这样:

+-------------+-------------+
|             | some text 1 |
| some number +-------------+
|             | some text 2 |
+-------------+-------------+
|             | some text 1 |
| some number +-------------+
|             | some text 2 |
+-------------+-------------+

我知道我可以通过为 QTableWidget 设置样式 sheet 来围绕 QTableWidgetItems 绘制边框

QTableView::item {
    border-bottom: 1px solid black;
}

但这适用于所有 QTableWidgetItems。我只想为 "some number" 和 "some text 2" 项绘制边框。

是否可以在坚持使用 QTableWidgetQTableWisgetItem 的同时这样做?我不能使用 QObject::setProperty 设置一些 属性 来识别样式 sheet 中的项目,因为 QTableWidgetItem 不是 QObject

使用委托,示例

class MyDelegate : public QItemDelegate
{
  public:
    MyDelegate( QObject *parent ) : QItemDelegate( parent ) { }
    void paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const;
};

void MyDelegate::paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const
{
    QItemDelegate::paint( painter, option, index );
    painter->setPen( Qt::red );
    painter->drawLine( option.rect.topLeft(), option.rect.bottomLeft() );
   // What line should you draw
   // painter->drawLine( option.rect.topLeft(), option.rect.topRight() );
   // painter->drawLine( option.rect.topLeft(), option.rect.bottomLeft() );
}
...

        m_TableWidgetClass->setItemDelegateForRow(row, new MyDelegate( this));
        //m_TableWidgetClass->setItemDelegateForColumn(column, new MyDelegate( this));