2
protected:
  virtual void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const
  {
    QHeaderView::paintSection(painter, rect, logicalIndex);
    painter->drawRect(2, 2, 10, 10);
  }

矩形不是画。但是当 paintSection 被移除时,它正在绘画。我需要在调用基础paintSection 后绘制矩形。

4

2 回答 2

0

正如您在这个问题中所回答的那样,rect是您应该绘画的区域。
如果您在此区域之外绘画,您的绘画可能会被其他单元格的绘画擦除。

所以rect用来画一个矩形:

painter->drawRect(rect.adjusted(2, 2, -2 , -2));
于 2014-08-26T09:12:26.220 回答
0

您需要在对 super 的调用中保护画家,这会修改它。尝试这个:

painter->save();
QHeaderView::paintSection(painter, rect, logicalIndex);
painter->restore();

此外,正如 Ezee 所指出的,您应该使用传入的 rect 作为绘制坐标的基础;正如该答案中所建议的,类似于:

painter->drawRect(rect.adjusted(2, 2, -2 , -2));
于 2019-07-30T19:19:56.883 回答