Как назначить границу для определенного QTableWidgetItem или строки в QTableWidget? - PullRequest
2 голосов
/ 31 августа 2011

Я пытаюсь сделать так, чтобы определенные ячейки в моем QTableWidget имели разные цветные границы на основе информации, содержащейся в элементе (ячейке).

Я не хочу выделять эти ячейки и использовать стили выбора цвета, потому что нужно выделять / выделять разные ячейки.

например У меня есть таблица с 3 столбцами и 3 рядами. Все ячейки имеют простой текст в каждой из них.
[] [Имя] [Значение] [Единицы]
[1] [один] [1] [см]
[2] [два] [2] [в]
[3] [три] [3] [м]

1-я строка выбирается пользователем и выделяется, процесс в фоновом режиме обновляет значения в таблице и обновляет значение в 3-й строке до 4. Теперь я хочу, чтобы 3-я строка имела красную рамку вокруг это.

Ответы [ 2 ]

6 голосов
/ 01 сентября 2011

Чтобы изменить саму границу, вам, вероятно, потребуется создать пользовательский делегат, который будет выполнять следующие действия:

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() для передачи необходимой информации туда и обратно между вашей таблицей и делегатом

См. документацию qt для QItemDelegate

0 голосов
/ 31 августа 2011

AFAIK, вы можете выделить ячейку другим цветом.Я не вижу никакой опции, которая изменяет только границу ячейки.

...