本文介绍了为QHeaderView交付的类实现paintSection的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

矩形未绘制.但是,当paintSection删除时,它就是绘画.我需要在调用base paintSection之后绘制矩形.

Rectangle is not painting. But when paintSection removed it is painting. I need to draw rectangle after call base paintSection.

推荐答案

您需要在对super的调用(它对其进行修改)中保护画家.试试这个:

You need to protect the painter across the call to super, which modifies it. Try this:

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

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

Also, as Ezee noted, you should be using the rect passed in as the basis for the coordinates you draw at; as suggested in that answer, something like:

painter->drawRect(rect.adjusted(2, 2, -2 , -2));

这篇关于为QHeaderView交付的类实现paintSection的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-05 13:12