Qt 5.5 绘制指针

Posted

技术标签:

【中文标题】Qt 5.5 绘制指针【英文标题】:Qt 5.5 drawing a pointer 【发布时间】:2016-03-21 15:02:14 【问题描述】:

Qt 中是否有在行尾绘制箭头/指针的内置方法?

我知道我可以自己画,但想知道是否已经有办法这样做,我在网上搜索并找不到任何东西。

我希望能够旋转线,箭头也随之旋转。

下面是我正在处理的图像:

我想在虚线的末端画箭头,它应该随着虚线从左下角指向周围而旋转。

[编辑] 最后我使用了一个多边形并旋转了它:

添加多边形针的代码:

    Polygon clsMyClass::plygnGetNeedle(QPoint* pptOrigin
                                      ,int intRadius
                                      ,float fltAngle) 
        const int cintNeedleHalfWidth = 4;

        QPolygon plyNeedle;
        int intX = pptOrigin->x(), intY = pptOrigin->y();
        plyNeedle << QPoint(intX - cintNeedleHalfWidth, intY)
                  << QPoint(intX, intY + cintNeedleHalfWidth)
                  << QPoint(intX + intRadius - cintNeedleHalfWidth, intY)
                  << QPoint(intX, intY- cintNeedleHalfWidth);
        return QTransform().translate(intX, intY)
                           .rotate(fltAngle)
                           .translate(-intX, -intY)
                           .map(plyNeedle);
    

【问题讨论】:

“我在网上搜索过,但没有找到任何东西。”那是因为他们确实隐藏了不错的功能;) 【参考方案1】:

我不记得在 Qt 中有这样的事情。至于箭头的位置和角度 - 如果您使用类似 QPainterPathangleAtPercent()pointAtPercent() 函数,您可以轻松找到它们。

【讨论】:

谢谢,我会调查,atm,用QPolygon画箭头 我现在已经使用 QPolygon 和 QPainterPath 绘制了箭头,现在我可以轻松地将多边形附加到一条线上,而无需计算所有点然后随线旋转吗? @SPlatten - 您可以简单地变换画家本身,而不是旋转线和箭头,只需旋转画家 但这不是旋转 Painter 上的所有内容吗?我希望背景保持静止,只有多边形和指针要旋转。 不,只是旋转了painter,和变换“canvas”不一样。例如,如果要镜像绘图,首先绘制所有内容,然后将画家旋转 180 度,然后再次执行绘制代码。这样您就可以在不修改点数的情况下获得结果。

以上是关于Qt 5.5 绘制指针的主要内容,如果未能解决你的问题,请参考以下文章

QT绘制简易表盘

Qt 智能指针学习(7种QT智能指针和4种std智能指针)

Qt 5.5 和 OpenGL:尝试调用 paintGL() 时引发读取访问冲突异常

qt如何获取主窗口的指针

qt中如何获得控件所在的布局的指针。。

Qt 智能指针学习(7种QT的特有指针)