从Qt5Widgets调用setFixedSize()时出现未处理的异常

时间:2016-07-20 09:52:50

标签: c++ qt qwidget

我正在使用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)这样的常量值,该方法也不起作用。

期待任何建议。

1 个答案:

答案 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)