¿Cómo puedo configurar el estilo de línea de una celda específica en un QTableView?

Estoy trabajando con un QT GUI. Estoy implementando un simple control de edición hexadecimal usando un QTableView. Mi idea inicial es usar una tabla con diecisiete columnas. Cada fila de la tabla tendrá 16 bytes hexadecimales y luego una representación ASCII de esos datos en la decimoséptima columna. Idealmente, me gustaría editar / configurar el estilo de la decimoséptima columna para que no tenga líneas en la parte superior e inferior de cada celda para que el texto tenga una apariencia fluida. ¿Cuál es la mejor manera de abordar esto utilizando el QTableView?

Podría pensar en un par de maneras de hacer lo que necesitas; ambos incluirían el dibujo de cuadrículas personalizadas, ya que parece que no hay una forma directa de engancharse a la rutina de pintura de cuadrículas de la clase QTableView:

1.Apague la cuadrícula estándar para su cuadrícula de vista de árbol llamando a setShowGrid (falso) y dibuje líneas de cuadrícula para las celdas que los necesitan con el elemento delegado. A continuación se muestra un ejemplo:

// custom item delegate to draw grid lines around cells class CustomDelegate : public QStyledItemDelegate { public: CustomDelegate(QTableView* tableView); protected: void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; private: QPen _gridPen; }; CustomDelegate::CustomDelegate(QTableView* tableView) { // create grid pen int gridHint = tableView->style()->styleHint(QStyle::SH_Table_GridLineColor, new QStyleOptionViewItemV4()); QColor gridColor = static_cast(gridHint); _gridPen = QPen(gridColor, 0, tableView->gridStyle()); } void CustomDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { QStyledItemDelegate::paint(painter, option, index); QPen oldPen = painter->pen(); painter->setPen(_gridPen); // paint vertical lines painter->drawLine(option.rect.topRight(), option.rect.bottomRight()); // paint horizontal lines if (index.column()!=1) //<-- check if column need horizontal grid lines painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight()); painter->setPen(oldPen); } // set up for your tree view: ui->tableView->setShowGrid(false); ui->tableView->setItemDelegate(new CustomDelegate(ui->tableView)); 

2.Cree un descendiente de QTableView y anule el método paintEvent . Allí puede dibujar su propia cuadrícula o dejar que la clase base dibuje y luego pintar líneas horizontales en la parte superior de la cuadrícula utilizando el color de fondo de Tableview.

Espero que esto ayude, saludos.