メインウィンドウから、ペイントしようとしているラベルを持つダイアログを起動しています。
したがって、ダイアログのヘッダー ファイル (.h) には 2 つのクラスがあります。1 つはダイアログ自体用で、もう 1 つはラベル用です。したがって、私のラベルのクラスは次のとおりです。
class MyImage : public QLabel
{
    Q_OBJECT
public:
        explicit MyImage(QWidget *parent = 0);
protected:
    void paintEvent(QPaintEvent *e);
};
.cpp には、QDialog のコンストラクターと共に、MyImage クラスのコンストラクターと paintEvent 関数があります。
MyImage::MyImage(QWidget *parent)
: QLabel(parent)
{
    /*...*/
}
void MyImage::paintEvent(QPaintEvent *e)
{
    QLabel::paintEvent(e);
    QPainter painter(image_label);
    painter.setPen(QPen(QBrush(QColor(0,0,0,180)),1,Qt::DashLine));
    painter.setBrush(QBrush(QColor(255,255,255,120)));
    painter.drawRect(selectionRect);
}
これimage_labelは MyImage オブジェクトです。QDialog のコンストラクターで、QDialog のレイアウトに追加するために次のことを行います。
mainLayout->addWidget(image_label);
しかし、それはヌルです。出力 ( ) にエラー メッセージが表示されcannot add null widget、ピックスマップをプログラムに追加しようとするとimage_labelクラッシュします。
ご回答ありがとうございます。