我正在使用Visual Studio中的Qt库开发代码。 我有一个A班作为Qt班的孩子。
class A::A(QWidget *parent, QGLWidget *shareWidget)
: QGLWidget(parent, shareWidget)
这个类的成员函数之一是:
void A::setImage(Image *image)
{
m_image = image;
setFixedSize(image->width(), image->height());
}
(其中setFixedSize是父类QWidget的方法)
此方法在以下事件中从另一个类调用:
bool B::event(QEvent* e)
{
QWidget::event(e);
...
A instA = new A();
instA.setImage(*image)
...
}
在setFixedSize中抛出以下异常,尽管传递的值实际上是普通的int,如width = height = 500。
Unhandled exception at 0x54A6B056 (Qt5Widgetsd.dll):
0xC0000005: Access violation reading location 0x939394BC.
这个方法在运行代码时多次调用setImage,它运行得很好。该问题仅在B :: event(QEvent * e)中出现。
PS:即使我直接传递像setFixedSize(500,500)这样的常量值,该方法也不起作用。
期待任何建议。
答案 0 :(得分:0)
pointers
这看起来很荒谬。你能不能给出准确的编译代码。
其次,在使用null
时,请确保它们不是void A::setImage(Image *image)
{
if(image) //Null check, it will enter to block only if image is not null
{
m_image = image;
setFixedSize(image->width(), image->height());
}
}
所以你的功能应该是这样的 -
Int(s)