问题标签 [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.
qt - 在 QListView 的 QWidgetDelegate 的 paint() 方法中渲染 QWidget
我在QListView
. 我目前有一个QListView
显示我的自定义模型,称为PlayQueue
基于QAbstractListModel
.
这适用于简单的文本,但现在我想为每个元素显示一个自定义小部件。所以我将 a 子类QStyledItemDelegate
化来实现这样的paint
方法:
选择背景已正确呈现,但未显示任何小部件。我尝试使用QPainter
Qt 示例中的简单命令,效果很好:
所以我尝试了一些更改,例如:
- 更改
QStyledItemDelegate
为QItemDelegate
- 添加
painter->save()
和painter->restore()
围绕渲染 - 将小部件几何设置为可用大小
但是我现在有点卡住了,我在互联网上搜索了一段时间,但找不到任何我想要的示例,他们都在谈论编辑小部件(这更容易)或自定义绘制控件(预定义的,如进度条)。但在这里我真的需要一个我创建的自定义小部件,其中包含一些布局、标签和像素图。谢谢你的帮助!
我在 Ubuntu 11.04 上为 GCC 使用 Qt 4.7.3。
qt - QPainter 的性能如何提高?
我有一个大显示器(大约 1000x2000 像素),我正在执行以下操作以将图像绘制到屏幕上:
我要绘制的屏幕越大,绘制所需的时间就越长。我猜 pImage 正在被 memcpy 处理,这就是区别。我怎样才能减少这种开销?我不想在这里扩展或任何东西。
谢谢。
qt - 没有平铺的 QBrush 纹理
使用带有纹理的 QBrush 时,有没有一种简单的方法可以摆脱平铺?
假设我们有一个大小为 20x20 像素的 QImage 纹理。上面的代码将把这个纹理平铺在整个被填充的矩形上。有没有一种简单的方法可以只绘制这个纹理的一个实例?QBrush 的使用至关重要。
从理论上讲,我可以重新加载以 QBrush 作为输入的 QPainter 的每个填充和绘制方法,并使用
法,但我认为必须有一个更简单的方法。谢谢,托尼。
qt - Qt & OpenGL - QGLWidget & QPainter:深度缓冲
我将 QGLWidget 子类化,并将我的绘画代码放在 paintEvent 而不是 paintGL 中,因为我想使用 QPainter 在使用 OpenGL 完成的 3D 内容上绘制 2D 叠加层。
当我没有覆盖时,我的深度缓冲工作正常。如果叠加层被绘制,我的深度缓冲区就会离开:我可以看到应该被前面的对象隐藏的东西。
初始化GL看起来像这样:
我的paintEvent代码的结构如下:
根据 if,相同的场景看起来不错(覆盖关闭)或错误(覆盖打开)。除了奇怪的深度缓冲问题之外,它工作得非常好。
我的(疯狂的)猜测是 QPainter 的构造禁用了深度缓冲。任何提示将不胜感激。我想一个后备解决方案是将我的叠加层渲染为纹理并让 OpenGL 将其混合。
qt - QPainter 在窗口获得/失去焦点时重绘
我正在学习 Qt,并试图用 QPainter 为我的程序绘制一个简单的显示。
我绘制了一次静态元素(框架等),之后才更新动态元素。
一切正常,除了窗口失去焦点时。一旦发生这种情况,整个区域就会被清除(动态元素会像以前一样继续绘制)。
是否可以防止这种行为?如果没有,我如何确定窗口是否失去焦点?
qt - QPainter 宽度和高度
有没有机会知道它的大小QPainter
?我正在使用QPainter
为移动应用程序绘制整个图形界面。问题是某些应用程序会在窗口上覆盖每个设备大小不同的菜单,从而使事情变得几乎不可能!有没有可能做到这一点而不是知道QPainter
大小?
编辑:简单width()
且height()
有效!
qt - 如何绘制具有透明度的 QPixmap
我有一个 QPixmap,我想在 QWidget 上绘制它。但是,我想让它 50% 透明,以便可以在下面看到背景。我怎样才能做到这一点?
c++ - 如何在 Qt 中声明和实例化一个变量?
起初我想为这个愚蠢的问题道歉,但我对 Qt 还很陌生,所以请原谅我 ;)
我在画画QPixmaps
。但是对于性能问题,我只想加载QPixmaps
一次以一遍又一遍地使用它们。目前我总是在调用更新时加载它们,但应该可以在构造函数中只加载一次。.h
在这种情况下,文件和变量声明会如何QPixmap
?到现在还想不通。
python - 如何旋转 QPushButton?
我想——使用 Python 和 Qt4——旋转QPushButton(或至少它的文本),以便它可以垂直站立。我在网上看过一些文档,但我无法理解它——它是用 C 语言编写的,我是 C 文盲。
从我读到的内容来看,需要重新实现paintEvent()处理程序,实例化和旋转QPainter()。但是我不知道如何为我只需要的一个 QString 或 QPushButton 执行此操作。我假设 QPaintEvent 会有一个“发送者”属性,就像信号一样,但它没有。我似乎从这个事件中得到的只是一个 QRect 或 QRegion。
如何找出特定于我的按钮或其标签的事件?
或者,因为这确实是个问题,如何旋转 QPushButton?
Mru,在下面建议了一些 C++ 示例,它完全重新实现了 QPushButton。由于我对 C++ 一无所知,而且我真的不需要完全重新实现,因此我尝试painEvent()
根据该示例在 Python 中重新实现处理程序。
这是我翻译的内容,但它不起作用:\
qt - QPainter 缓存可能吗?
我有需要大量绘画的饼形小部件。所以我想缓存 QPainter 一旦它在paintEvent中被绘制。并在以后重用它。有没有直接或hacky的方式来做到这一点?