草庐IT

QPainter

全部标签

windows - Qt:同一个小部件中的 QPainter + GDI?

我正在尝试使用methoddescribedhere在同一个小部件上使用QPainter和GDI调用。不幸的是,本教程似乎是在早期版本的Qt上编写的,现在它不起作用。我设置了WA_PaintOnScreen标志并重新实现paintEngine()以返回NULL。然后在paintEvent()上我创建了一个QPainter,使用它然后使用一些GDI调用来绘制位图。GDI调用工作正常,但QPainter什么也不做。我在控制台上收到以下错误:QPainter::begin:Paintdevicereturnedengine==0,type:1这是不再支持了吗?我该怎么做?我也曾尝试在GDI绘

c++ - 使用 QPainter 绘制着色 QPixmap

我有一个加载了QPixmap的单色透明PNG,我想使用不同的颜色多次绘制这个像素图(例如,一次为绿色,另一次为黄色,等等)。这些QPixmaps通过QPainter在QWidget的paintEvent函数中渲染。 最佳答案 您可以将像素图转换为qimage并绘制您自己的颜色。1-使用QImage::fill(DesiredColor)2-QPaintDevice支持QImage,所以使用QPainterpainter(&qImage);//8位在绘画事件中不支持。然后使用QPixmap::fromImage(qImage);用图像

c++ - QPainter 旋转。在哪里翻译?

我正在用Qt开发一个新项目,使用QPainter绘制一个QWidget。问题是,当我尝试旋转QPainter时,我想要绘制的文本旋转出我的QWidget。我知道一般如何解决这个问题,但不知何故直到现在我才弄明白。我必须翻译我的QPainter,以便将我的文本正确定位以进行旋转,但我不知道如何将那个点指定到我应该翻译我的坐标系的位置。我没有翻译的代码:QPainterpainter;floatwidth=40;floatheight=200;floatrangeMin=0;floatrangeMax=100;floatprogress=80;QStringformat("%1/%2");

c++ - Qt4 到 Qt5:带有 5 个参数的 QPainter::drawPixmapFragments() - 如何解决?

Qt4.8(4.8.6)有一个带有5个参数的QPainter::drawPixmapFragments()重载函数:voiddrawPixmapFragments(constQRectF*targetRects,constQRectF*sourceRects,intfragmentCount,constQPixmap&pixmap,PixmapFragmentHintshints=0);Qt5(5.4.1)没有这样的函数,它只有一个(与Qt4.8相同)有4个参数:voiddrawPixmapFragments(constPixmapFragment*fragments,intfragm

c++ - Qt绘制垂直布局

我有多个child的QVBoxLayout,我希望能够在其上绘图。我已经尝试为布局实现paintEvent(QPaintEvent*)但我绘制的所有内容都保留在子项下。我该怎么做?如果能提供示例代码,我将不胜感激。 最佳答案 布局没有paintEvent成员,因此您无法重新实现它。我很惊讶你设法从这个行动中获得一些效果。将新的QWidget(我们称之为包装器)添加到您的表单中,并将您的QVBoxLayout添加到此小部件中。创建另一个小部件(覆盖)并使用setParent()将其添加到包装器中,而不是将其添加到布局中。重新实现覆盖层

c++ - 为什么 QPainter 可能会拒绝在 paintEvent 内部工作?

我有:classQTextEditEnter:publicQTextEdit{Q_OBJECTpublic:QTextEditEnter(QWidget*_parent):QTextEdit(_parent){this->setFrameStyle(QFrame::Sunken);//Sunken!}protected:virtualvoidkeyPressEvent(QKeyEvent*event);virtualvoidpaintEvent(QPaintEvent*_event){QTextEdit::paintEvent(_event);QPainterpnt(this);pnt

c++ - 每次收到一些数据时都使用 QPainter

我是Qt初学者,想用QPainter。我的流程是这样的:我从串口接收数据坐标(x,y),比如(1,1),(2,3),等。我想在每次收到数据时在窗口中绘制这些点。我看到QPainter在事件中使用,并且只绘制一次。每次收到数据如何使用?就像一个信号DataCome()和一个插槽Paint()。\顺便说一句,非常感谢答案。您的建议非常有用。简而言之,updata()或repaint()在这种情况下有效。我还有一个问题。假设,串口不断向电脑发送坐标点,我想在窗口中显示所有点。有没有什么方法,我可以把那些早早出现在窗口上的点留下,我只需要画新的点?就像matlab中的“坚持”。或者我需要一个容

c++ - Qt drawRect 在后台

我想绘制slider的背景。我试过了,但是颜色覆盖了整个slider。这是在QSlider的继承类中voidpaintEvent(QPaintEvent*e){QPainterpainter(this);painter.begin(this);painter.setBrush(/*notimportant*/);//Thiscoversupthecontrol.HowdoImakeitsothecolorisin//thebackgroundandthecontrolisstillvisible?painter.drawRect(rect());painter.end();}

c++ - GUI 应用程序中的 QPainter 错误

我正在尝试编写一个GUI,用C++在其上绘制图形。我得到了一个错误列表,所有错误都说:“QPainter::begin:Widget绘画只能作为paintEvent的结果开始”似乎没有任何东西在绘画。main.cpp#include#include#include#includeusingnamespacestd;#include"skewNormal.h"#include"ui.h"intmain(intargc,char*argv[]){QApplicationapp(argc,argv);Windoww;#ifdefined(Q_OS_SYMBIAN)w.showMaximize

c++ - Qt:在子部件上使用 QPainter

我遇到了一个简单的QWidget程序的Qt/C++问题,该程序在子QWidget中绘制了一个椭圆。程序组成:(1)父QWidget(2)子QWidget(用作椭圆的绘图表面)(3)绘制QPushButton这里是部分代码(QPushButtonSlot和Signal代码为简单起见省略)voidDraw::paintEvent(QPaintEvent*event){QPainterpainter;painter.begin(child_Widget);//Thelinewiththeproblempainter.setRenderHint(QPainter::Antialiasing,t