如何为特定的QTableWidgetItem或QTableWidget中的行指定边框?

时间:2011-08-31 19:25:57

标签: qt qtablewidget qtablewidgetitem

我试图让QTableWidget中的某些单元格根据项目(单元格)中包含的信息具有不同的彩色边框。

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

代表。 我有一个3列3行的表。所有单元格中都有简单的文本     [] [名称] [值] [单位]
    [1] [1] [1] [cm]
    [2] [2] [2] [in]
    [3] [3] [3] [m]

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

2 个答案:

答案 0 :(得分:6)

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

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文档

答案 1 :(得分:0)

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