问题标签 [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 投票
3 回答
12445 浏览

qt - 在 QListView 的 QWidgetDelegate 的 paint() 方法中渲染 QWidget

我在QListView. 我目前有一个QListView显示我的自定义模型,称为PlayQueue基于QAbstractListModel.

这适用于简单的文本,但现在我想为每个元素显示一个自定义小部件。所以我将 a 子类QStyledItemDelegate化来实现这样的paint方法:

选择背景已正确呈现,但未显示任何小部件。我尝试使用QPainterQt 示例中的简单命令,效果很好:

所以我尝试了一些更改,例如:

  • 更改QStyledItemDelegateQItemDelegate
  • 添加painter->save()painter->restore()围绕渲染
  • 将小部件几何设置为可用大小

但是我现在有点卡住了,我在互联网上搜索了一段时间,但找不到任何我想要的示例,他们都在谈论编辑小部件(这更容易)或自定义绘制控件(预定义的,如进度条)。但在这里我真的需要一个我创建的自定义小部件,其中包含一些布局、标签和像素图。谢谢你的帮助!

我在 Ubuntu 11.04 上为 GCC 使用 Qt 4.7.3。

0 投票
2 回答
6007 浏览

qt - QPainter 的性能如何提高?

我有一个大显示器(大约 1000x2000 像素),我正在执行以下操作以将图像绘制到屏幕上:

我要绘制的屏幕越大,绘制所需的时间就越长。我猜 pImage 正在被 memcpy 处理,这就是区别。我怎样才能减少这种开销?我不想在这里扩展或任何东西。

谢谢。

0 投票
1 回答
2448 浏览

qt - 没有平铺的 QBrush 纹理

使用带有纹理的 QBrush 时,有没有一种简单的方法可以摆脱平铺?

假设我们有一个大小为 20x20 像素的 QImage 纹理。上面的代码将把这个纹理平铺在整个被填充的矩形上。有没有一种简单的方法可以只绘制这个纹理的一个实例?QBrush 的使用至关重要。

从理论上讲,我可以重新加载以 QBrush 作为输入的 QPainter 的每个填充和绘制方法,并使用

法,但我认为必须有一个更简单的方法。

谢谢,托尼。

0 投票
1 回答
2330 浏览

qt - Qt & OpenGL - QGLWidget & QPainter:深度缓冲

我将 QGLWidget 子类化,并将我的绘画代码放在 paintEvent 而不是 paintGL 中,因为我想使用 QPainter 在使用 OpenGL 完成的 3D 内容上绘制 2D 叠加层。

当我没有覆盖时,我的深度缓冲工作正常。如果叠加层被绘制,我的深度缓冲区就会离开:我可以看到应该被前面的对象隐藏的东西。

初始化GL看起来像这样:

我的paintEvent代码的结构如下:

根据 if,相同的场景看起来不错(覆盖关闭)或错误(覆盖打开)。除了奇怪的深度缓冲问题之外,它工作得非常好。

我的(疯狂的)猜测是 QPainter 的构造禁用了深度缓冲。任何提示将不胜感激。我想一个后备解决方案是将我的叠加层渲染为纹理并让 OpenGL 将其混合。

0 投票
2 回答
857 浏览

qt - QPainter 在窗口获得/失去焦点时重绘

我正在学习 Qt,并试图用 QPainter 为我的程序绘制一个简单的显示。

我绘制了一次静态元素(框架等),之后才更新动态元素。

一切正常,除了窗口失去焦点时。一旦发生这种情况,整个区域就会被清除(动态元素会像以前一样继续绘制)。

是否可以防止这种行为?如果没有,我如何确定窗口是否失去焦点?

0 投票
1 回答
4481 浏览

qt - QPainter 宽度和高度

有没有机会知道它的大小QPainter?我正在使用QPainter为移动应用程序绘制整个图形界面。问题是某些应用程序会在窗口上覆盖每个设备大小不同的菜单,从而使事情变得几乎不可能!有没有可能做到这一点而不是知道QPainter大小?

编辑:简单width()height()有效!

0 投票
1 回答
9398 浏览

qt - 如何绘制具有透明度的 QPixmap

我有一个 QPixmap,我想在 QWidget 上绘制它。但是,我想让它 50% 透明,以便可以在下面看到背景。我怎样才能做到这一点?

0 投票
2 回答
2107 浏览

c++ - 如何在 Qt 中声明和实例化一个变量?

起初我想为这个愚蠢的问题道歉,但我对 Qt 还很陌生,所以请原谅我 ;)

我在画画QPixmaps。但是对于性能问题,我只想加载QPixmaps一次以一遍又一遍地使用它们。目前我总是在调用更新时加载它们,但应该可以在构造函数中只加载一次。.h在这种情况下,文件和变量声明会如何QPixmap?到现在还想不通。

0 投票
3 回答
5795 浏览

python - 如何旋转 QPushButton?

我想——使用 Python 和 Qt4——旋转QPushButton(或至少它的文本),以便它可以垂直站立。我在网上看过一些文档,但我无法理解它——它是用 C 语言编写的,我是 C 文盲。

从我读到的内容来看,需要重新实现paintEvent()处理程序,实例化和旋转QPainter()。但是我不知道如何为我只需要的一个 QString 或 QPushButton 执行此操作。我假设 QPaintEvent 会有一个“发送者”属性,就像信号一样,但它没有。我似乎从这个事件中得到的只是一个 QRect 或 QRegion。

如何找出特定于我的按钮或其标签的事件?
或者,因为这确实是个问题,如何旋转 QPushButton?

Mru,在下面建议了一些 C++ 示例,它完全重新实现了 QPushButton。由于我对 C++ 一无所知,而且我真的不需要完全重新实现,因此我尝试painEvent()根据该示例在 Python 中重新实现处理程序。

这是我翻译的内容,但它不起作用:\

0 投票
1 回答
800 浏览

qt - QPainter 缓存可能吗?

我有需要大量绘画的饼形小部件。所以我想缓存 QPainter 一旦它在paintEvent中被绘制。并在以后重用它。有没有直接或hacky的方式来做到这一点?