【问题标题】:How to center QPixmap while Painting it inside QItemDelegate of QListWidget如何在 QListWidget 的 QItemDelegate 中绘制 QPixmap 时将其居中
【发布时间】:2012-03-08 08:12:14
【问题描述】:

我正在 QListWidget 的 QItemDelegate 内绘制一个 QPixmap。每个 QListWidgetItem 都有不同的维度。里面

void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) 

QItemDelegate 的函数,我想在 QListWidgetItem 内绘制中心对齐的 QPixmap。 option.rect() 给出了项目的几何形状,我可以用它计算中心位置并相应地绘制,但我想知道这种对齐的更好方法。有人可以告诉我答案吗?

【问题讨论】:

  • 鉴于所有这些战略性 Qs,我会假设这个问题是关于 Qt 的?
  • @gokula 你能准确说出你想要什么...
  • @CodyGray 是的。这是关于 Qt 的。您也可以看到该标签
  • @shobi 我正在 QListWidgetItem 上绘制 QPixmap。我想以中心对齐的方式绘制它。我想知道是否有任何内置的绘制方法可以在 QListWidgetItem 内绘制居中对齐。如果可能的话,请您回答我在stackoverflow.com/questions/9618912/… 中发布的问题
  • @CodyGray 我在这个链接中还有一个问题(stackoverflow.com/questions/9618912/…)。可以的话请回答

标签: qt qpainter qlistwidget qpixmap qitemdelegate


【解决方案1】:

你知道你的 QListWidgetItem 的尺寸吗?如果是这样,只需使用以下内容自己绘制 QPixmap:

painter->drawPixmap(
    (item->width() - pixmap->width()) / 2,
    (item->heigt() - pixmap->height()),
    pixmap
);

【讨论】:

  • 是的,我们可以通过option.rect计算QListWidgetItem的维度。你提到的代码正是我提到的计算我们自己的代码。我想知道除了计算我们自己之外还有什么更好的方法
  • @gokulakrishnangopalakrishnan,更好的方法? IMO,最好的方法是自己做,这样你就可以准确控制它的外观。我不会委托给框架进行这种简单的渲染(即使对于复杂的渲染,我仍然认为最好的方法是“手动”完成。它会减少围绕框架故障和限制的麻烦)。
  • @Laurant 谢谢。我还有一个问题 (stackoverflow.com/questions/9618912/…)。如果可以的话,你能回答一下吗?
猜你喜欢
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多