首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为QHeaderView提供的类实现paintSection

为QHeaderView提供的类实现paintSection
EN

Stack Overflow用户
提问于 2014-08-25 23:46:22
回答 2查看 1.1K关注 0票数 2
代码语言:javascript
复制
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之后绘制矩形。

EN

回答 2

Stack Overflow用户

发布于 2014-08-26 17:12:26

正如你的问题在this中回答的那样,rect是你应该画的一个区域。

如果您在此区域之外进行绘制,您的绘图可能会因为绘制其他单元格而被擦除。

所以使用rect来绘制一个矩形:

代码语言:javascript
复制
painter->drawRect(rect.adjusted(2, 2, -2 , -2));
票数 0
EN

Stack Overflow用户

发布于 2019-07-31 03:19:57

你需要在调用super的过程中保护绘制器,这会修改它。试试这个:

代码语言:javascript
复制
painter->save();
QHeaderView::paintSection(painter, rect, logicalIndex);
painter->restore();

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

代码语言:javascript
复制
painter->drawRect(rect.adjusted(2, 2, -2 , -2));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25489640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档