首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缩放QGraphicsView时调整QPen厚度?

缩放QGraphicsView时调整QPen厚度?
EN

Stack Overflow用户
提问于 2012-10-29 19:11:53
回答 1查看 8.8K关注 0票数 10

QGraphicsView的一个令人惊叹的功能是它能够根据场景的内容(实际上是插入到场景中的每个QGraphicsItem )进行自我缩放。我插入的QPixmap可以正确缩放,这意味着如果我提供4x4的比例因子:

代码语言:javascript
复制
view->scale(4,4);

像我想做的那样缩放Pixmap。

但这不是我习惯绘制的矩形的情况;它们的目的是包围我在场景中绘制的像素图,无论比例因子如何,它们的厚度都保持为1,而不是-我猜- 4。

我一直在搜索所有这些东西的文档,试图弄清楚“化妆品笔”的确切用途,但我仍然无法让我的矩形变得更粗。

最后注意:我有一个自定义的QGraphicsItem,用于绘制矩形的QPen在

代码语言:javascript
复制
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);

方法。

有关系吗?

提前感谢并为我在Qt框架和绘图算法领域缺乏经验/知识而道歉……

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-29 20:08:52

在哪里实例化QPen实际上并不重要。

QPen的默认宽度为0。这是一个特殊的值,表示修饰是真的,宽度实际上是1。因此,如果你不想让笔是修饰的,你必须将它设置为所需的宽度。您可能还需要将cosmetic设置为false。

下面是一个简单的例子:

代码语言:javascript
复制
#include <QtGui>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QGraphicsView view;
    QGraphicsScene scene;

    QGraphicsRectItem *item1 = scene.addRect(20, 20, 20, 20);
    QGraphicsRectItem *item2 = scene.addRect(50, 20, 20, 20);

    QPen pen1, pen2;
    pen1.setWidth(5);
    pen2.setWidth(5);
    pen1.setCosmetic(true);
    pen2.setCosmetic(false);

    item1->setPen(pen1);
    item2->setPen(pen2);

    view.setScene(&scene);
    view.scale(4, 4); // both rects are the same size, but one a has wider pen
    view.show();

    return a.exec();
}
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13120486

复制
相关文章

相似问题

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