C++ 调用begin时QPainter失败
我正试图在QsplashScreen上绘制PNG文件。 我正试图通过C++ 调用begin时QPainter失败,c++,qt,qpainter,qpixmap,C++,Qt,Qpainter,Qpixmap,我正试图在QsplashScreen上绘制PNG文件。 我正试图通过QPainter完成这项工作。我想通过QPainter来做这件事的原因是,我想让它平滑地最小化(直到它消失),当我重新绘制它时,它看起来一点也不平滑 我将qsplashsscreen传递给QPainter构造函数。当我使用qsplashsscreen作为参数调用QPainter中的begin()时,它在断言d->active时失败。当我提供Qpixmap时,它以相同的方式发生 我做错了什么?我应该如何启动QPainter的beg
QPainter
完成这项工作。我想通过QPainter
来做这件事的原因是,我想让它平滑地最小化(直到它消失),当我重新绘制它时,它看起来一点也不平滑
我将qsplashsscreen
传递给QPainter
构造函数。当我使用qsplashsscreen
作为参数调用QPainter
中的begin()时,它在断言d->active
时失败。当我提供Qpixmap
时,它以相同的方式发生
我做错了什么?我应该如何启动
QPainter
的begin()?您想创建QSplashScreen
的子类并重新实现drawContents
。看
使用他们给你的画师,你应该很好。你想创建
qsplashsscreen
的子类并重新实现drawContents
。看
使用他们给你的油漆工,你应该很好。特别是关于使用
QPainter
,begin
方法的文档明确指出,一次只能在给定的油漆设备上激活一个油漆工,另外,使用构造函数版本的QPainter
会自动为传入的值调用begin。因此,如果您按照问题中的描述进行操作,如:
QWidget *widget( ... );
QPainter painter( widget );
painter.begin( widget ); // <-- error, we already have a painter active on that paint device (our own).
// Do stuff...
painter.end();
QWidget*widget(…);
QPainter painter(小部件);
painter.begin(小部件);// 特别是关于使用QPainter
,begin
方法的文档明确指出,一次只能有一个油漆器在给定的油漆设备上处于活动状态,并且使用QPainter
的构造函数版本会自动调用begin以获取传入的值。因此,如果您按照问题中的描述进行操作,如:
QWidget *widget( ... );
QPainter painter( widget );
painter.begin( widget ); // <-- error, we already have a painter active on that paint device (our own).
// Do stuff...
painter.end();
QWidget*widget(…);
QPainter painter(小部件);
painter.begin(小部件);//我不同意最后一部分。如果您刚刚开始,则应始终使用提供给您的QPaint覆盖绘制或绘制事件。但是不管怎样,你都应该阅读你使用的函数的文档。我不同意最后一部分。如果您刚刚开始,则应始终使用提供给您的QPaint覆盖绘制或绘制事件。但是不管怎样,你都应该阅读你使用的函数的文档。谢谢,它确实帮助了我,我顺利过渡。我还有一个问题。不知什么原因,原来的照片还在那里。发生的事情是,我首先显示完整尺寸的图片,然后平滑地将其最小化。问题是,当图片最小化时,原始的全尺寸图片仍然保留在背景中。我试着为第一幅画设置可见(假),但没有帮助。。。有什么想法吗?非常感谢。在没有实际看到它的情况下,尝试使用backgroundMode()和橡皮擦()。谢谢,它确实帮助了我,我顺利完成了过渡。我还有一个问题。不知什么原因,原来的照片还在那里。发生的事情是,我首先显示完整尺寸的图片,然后平滑地将其最小化。问题是,当图片最小化时,原始的全尺寸图片仍然保留在背景中。我试着为第一幅画设置可见(假),但没有帮助。。。有什么想法吗?非常感谢。在没有实际看到它的情况下,尝试使用backgroundMode()和橡皮擦()