3

我正在尝试根据项目(单元格)中包含的信息使 QTableWidget 中的某些单元格具有不同颜色的边框。

我不想选择这些单元格并使用选择颜色样式,因为需要选择/突出显示不同的单元格。

例如。我有一个 3 列和 3 行的表。所有单元格中的每个单元格都有简单的文本。
[] [名称] [价值] [单位]
[1] [一] [1] [厘米]
[2] [二] [2] [英寸]
[3] [三] [3] [米]

第一行由用户选择并突出显示,后台进程更新表中的值并将第三行中的值更新为 4。现在我想让第三行周围有一个红色边框。

4

2 回答 2

8

要更改边框本身,您可能需要创建一个自定义委托来执行以下操作:

class MyDelegate : public QItemDelegate {
  public:
    MyDelegate( QObject *parent ) : QItemDelegate( parent ) { }
    void paint( QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index ) const {
      QItemDelegate::paint( painter, option, index );
      if( /* some condition */ ) {
         painter->setPen( Qt::red );
         painter->drawRect( option.rect );
      }
    }
}

然后你可以调用:

myTableWidget->setItemDelegate( new MyDelegate(this) );

您可以使用QTableWidgetItem::setData()QModelIndex::data()函数在表和委托之间来回传递必要的信息

请参阅QItemDelegate的 qt 文档

于 2011-08-31T22:31:34.380 回答
0

AFAIK,您可以用不同的颜色突出显示单元格。我没有看到任何仅更改单元格边框的选项。

于 2011-08-31T19:46:45.213 回答