问题标签 [qpainter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
991 浏览

c++ - 通过 QDirectPainter 绘画

谁能详细建议我如何使用QDirectPainter类直接在帧缓冲区上绘制小部件。如果您提供一个工作示例,我会更有帮助。

0 投票
2 回答
2178 浏览

qt - Qpainter.rotate() 问题 - qgis

我正在定制 QuantumGIS,它使用 Qt 的 Qpainter 来绘制和绘制......

我正在尝试在画布上绘制一条多段线,该多段线作为消息队列的更新......绘制非常好......但在我作为更新获得的多段线或多边形对象中还包括一个角度场用于物体的旋转。问题是,当我尝试在 qpainter 使用painter.rotate() 方法绘制折线之前旋转线时,线旋转得很好,但绘制的线的位置会发生变化......并且它会在每次缩放和Qgis画布的平底锅..在设置painter.rotate()之前,我正在保存画家状态并在绘制之后再次恢复其状态,我认为这类似于OpenGL的push / popMatrix函数。Qpainter 的保存恢复功能是否类似于 opengl 的 push/popMatrix 功能?

这是一个代码片段:

帮助表示赞赏。谢谢。

0 投票
2 回答
3314 浏览

c++ - QPainter 彩色文本(语法着色)

我有一个自定义的 Qt 小部件,用于显示反汇编,我希望为其添加语法着色。

目前,我只是将 设置QPen为纯色,构建我想要显示的文本,并将其渲染到QPainter适当的坐标处。

问题是,添加语法着色的最佳方法是什么?我想到了几个:

  1. 我可以简单地将颜色划分为逻辑块,每个逻辑块之前都将 QPen 设置为所需的颜色。
  2. 我可以有特殊的转义字符来表示调色板的变化,一次渲染 1 个字符。
  3. 我可以对#1 进行修改并创建一个列表std::pair<QColor, QString>,然后我可以简单地迭代列表设置颜色并在我从列表前面弹出项目时绘制文本。
  4. 完全不同的东西?

我知道我列出的 3 种方法中的每一种在技术上都是可行的,但我正在寻找一个非常有效的解决方案。这段代码会被调用很多次。而且由于这是一个交互式调试器,如果此代码很慢,那么快速步进或跟踪的人会看到明显的减速。

编辑:我知道QSyntaxHighlighterand QTextDocument。主要问题是这些通常不太适合我的目的。我有几列都有分隔线,可以来回滑动。为了给您一个想法,这是我的调试器屏幕截图的链接。如您所见,它根本不像一个文本文档。事实上,它更接近于列表或表格。但是已经有一堆自定义绘图正在进行,使正常QTextDocument有点不切实际。

编辑:我不正确,似乎QTextDocument可以直接渲染到QPainter. 看起来像我需要的!

编辑:目前尚不清楚如何控制在何处以及如何QTextDocumentQTextLayout将使用QPainter. 我试图使用它们无济于事。因此,如果有人可以提供一个基本示例,那将非常有帮助。

编辑:我最终能够使用这样的东西得到我想要的东西:

0 投票
3 回答
2259 浏览

c++ - Qt - 创建 QPainter

我正在尝试paintEvent在我的程序中重写方法并进行更改。

在这里,我尝试改变我的bg形象。但是我在网上遇到了一个错误:QPainter painter(this);

错误:变量“QPainter Painter”已初始化,但类型不完整

0 投票
2 回答
1889 浏览

python - PyQt4 - 图像水印

我正在尝试打开一个 PNG 图像并通过 QImage 和 QPainter 向它写入一些文本(水印)。该代码在 Linux 上 100% 工作,但是当我在 Windows XP 上运行它时(尚未使用任何其他版本的 Windows 进行测试),文本永远不会写入图像。我在 try/except 块中有代码,但没有返回错误。

使用 Python 2.6.2、PyQt 4.5.4

有任何想法吗?

0 投票
3 回答
4528 浏览

qt - 不清除背景的Qt绘画

我正在使用 QPainter 在窗口上获取一些图形。不幸的是,每次paintEvent()调用该函数时,都会清除整个窗口。不清零怎么画?即,我如何让以前的绘画活动中的东西保持不变?

我正在使用 Qt4

0 投票
1 回答
1290 浏览

qt - QPainter 和 QTimer

如何使用QPainterQTimer绘制实时正弦曲线

谢谢。

0 投票
1 回答
1152 浏览

python - Qt Python - 工具箱中的报告:QTextDocument 和 QPainter

我想使用工具箱构建多个文档报告。两页是一个开始的选择。格式化没问题,以后可以用。

我尝试在 Html 中使用 QTextDocument,或者使用 QPainter。

当然,为了进行测试并保持简单,我只是要求在 Qt 中显示显示在文档顶部的报告标题。

这是工具箱主框架的功能:

...使用带有 Html 的 QTextDocument 保存第一页的函数:

这里是使用 QPainter 的函数:

问题是,它只显示第 1 页和第 2 页的工具箱,而不是第 1 页和第 2 页内报告的标题。

这里缺少什么?

高度赞赏所有意见和建议。

0 投票
2 回答
1076 浏览

c++ - 调用开始时QPainter失败

我正在尝试在 QsplashScreen 上绘制 PNG 文件。我试图通过QPainter. 我想通过它做的原因QPainter是因为我希望它平滑地最小化(直到它消失),当我只是修复它时,它看起来一点也不平滑。

我将 传递QSplashScreenQPainter构造函数。当我以参数为参数调用 begin() 时,它在QPainterassertQSplashScreen上失败d->active。当我提供时,它以同样的方式发生Qpixmap

我究竟做错了什么?我应该如何启动QPainter'开始()?

0 投票
2 回答
2700 浏览

c++ - QWidget 的paintEvent() 滞后应用程序

我正在研究和修改冰箱磁铁示例,我尝试做的最后一件事是绘制一些应该在背景上的标签和线条。

在环顾四周试图弄清楚如何绘制标签和线条之后,我了解到我可以覆盖 QWidget 的 paintEvent() 来完成它。但是,在我这样做之后,应用程序变得迟钝,我发现这是因为在看似无限的循环中调用了paintEvent()。

为了弄清楚如何解决这个问题,我将绘制标签和线条的代码移到了类的构造函数中。不过,只有标签是在应用程序上绘制的。之后,我将标签留在了构造函数中,但将绘制线条的代码移回了paintEvent()。它起作用了,线条按预期绘制,并且仅在拖动东西时才调用paintEvent()。

为什么没有在构造函数上绘制线条,为什么paintEvent() 会进入无限循环?

这是应该绘制标签和线条的片段: