Я пытаюсь настроить границы ячеек в (custom) QTableView
.Для этого я нашел это :
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 );
}
}
}
Это хорошо работает.Я добавил это в свой делегат, который уже имеет собственный метод paint
для других целей, и он делает именно то, что я хочу:
Neat.
Дела начинают развиваться, когда я хочу решить, какие границы я на самом деле рисую.Для этого у каждого элемента есть свойство BorderOption
, которое описывает, какие границы следует рисовать.И моя сетка перестала быть 1px больше.
Итак, я решил попробовать следующее:
painter->drawLine(option.rect.topLeft(), option.rect.topRight());
painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight());
Что должно иметь такой же результат, верно?Правильно?Ну ... нет.
Кажется, что нарисованы две линии шириной 1px, по одной для каждой ячейки.
Что могло бы иметь смысл, если бы прямоугольники ячеек не перекрывались.Но мы уже видели, что это , а не , так как первый пример работал и производил прямоугольники шириной 1px.
Я что-то не так делаю?
Спасибо