Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 调用begin时QPainter失败_C++_Qt_Qpainter_Qpixmap - Fatal编程技术网

C++ 调用begin时QPainter失败

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

我正试图在QsplashScreen上绘制PNG文件。 我正试图通过
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()和橡皮擦()