我想在QTableWidgetItem
内画一条线。
为了画线,我重新实现了QStyledItemDelegate::paint
方法。
但是,当我滚动或选择QTableWidget
中的某个项目时。
有些物品失去了绘画效果。
这是我的油漆实施:
void DrawLineDelegate::paint(QPainter *poPainter, const QStyleOptionViewItem &oOption, const QModelIndex &oIndex) const
{
// Valid index ?
if(!oIndex.isValid())
// Not valid.
return;
const QRect oRect( oOption.rect );
// Painter has certain settings
poPainter->save();
// Draw line
QColor oLineColor (oIndex.data(Qt::UserRole).toString());
poPainter->setRenderHint(QPainter::Antialiasing);
poPainter->setPen(QPen(oLineColor, 2, Qt::SolidLine, Qt::RoundCap));
poPainter->drawLine(oRect.left(), // Start X-coordinate
oRect.top() - oRect.height() / 2 , // Center Height (Y-coordinate)
oRect.left() + oRect.width(), // Line width
oRect.top() - oRect.height() / 2); // Center Height (Y-coordinate)
poPainter->restore();
QStyledItemDelegate::paint( poPainter, oOption, oIndex );
}
在TableWidget init函数中,我设置了像这样的委托项
ui->tableWidget->setItemDelegateForColumn(2, new DrawLineDelegate(this) );
注意:每个项目我将颜色名称存储为Qt::UserData
。
在表格初始化时,线条正常,错误就在我正在玩桌子的时候。
以下是一些截图
有什么建议吗?
答案 0 :(得分:2)
好的,由于Kuba Ober的提示,我成功地解决了我的问题。
修正:
这是完整的工作答案。
PropertyPlaceholderConfigurer