1

QRubberBandQt ヘルプから直接引用したコードでクラッシュが発生しました。コール時にクラッシュが発生しsetGeometryます。QRubberBandqDebugでジオメトリにアクセスできるようになったので、インスタンスが作成されたので、混乱しています。

このコンテキスト: コードは、次のように作成されたカスタム ウィジェットにあります。

   ImageLabel2* image = new ImageLabel2(this);
   image->setPixmap(pix);
   setCentralWidget(image);

クラッシュを回避するために呼び出しをコメントアウトするsetGeometryと、デバッグステートメントが引き続き出力されるため、インスタンスが持続することがわかります。

私は明らかに間違ったことをしていますか?

デバッグ出力:

mousePress QPoint(294,343)
プログラムが予期せず終了しました。


クラッシュ ログから:

例外の種類: EXC_BAD_ACCESS (SIGSEGV) 例外コード: 0x000000000000000d、0x0000000000000000


コード:

void ImageLabel2::mousePressEvent(QMouseEvent *event)
{
    qDebug() << "mousePress" << event->pos();

    origin = event->pos();

    if (!rubberBand){
        rubberBand = new QRubberBand(QRubberBand::Rectangle, this); 
    }
    qDebug() <<  rubberBand->geometry();
    rubberBand->setGeometry(QRect(origin, QSize())); // CRASH
    rubberBand->show();
}
4

2 に答える 2