0

Qt の QPixmap に非常に奇妙な問題があります。私はC++でコーディングしています。とにかく問題は、メイン ウィンドウ クラスで 9 番目の QPixmap ポインターを作成しようとすると、プログラムがクラッシュすることです。これは機能します:

class MainWindow : public QMainWindow
{
    Q_OBJECT
    QPixmap *doorOpened, *doorClosed, *dirUp, *dirDown, *dirNone, *timePause, *timePlay, *timeStop;
     //QPixmap *doorOpen;
 public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private:
    Ui::MainWindow *ui;
};

そしてこれはクラッシュします:

class MainWindow : public QMainWindow
{
    Q_OBJECT
    QPixmap *doorOpened, *doorClosed, *dirUp, *dirDown, *dirNone, *timePause, *timePlay, *timeStop;
     QPixmap *doorOpen;
 public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private:
    Ui::MainWindow *ui;
};

コードから推測できるように、この作業は Qt Creator とウィンドウ デザイナーで部分的に行われます。

では、この奇妙な動作の原因となる、ここで間違っていることは何ですか?

前もって感謝します!

4

1 に答える 1

1

初期化またはアクセスする前に、コンストラクターで最初にすべてのポインターをゼロに初期化してみてください。

また、QPixmap には機能がありますisNull()。これは、それらのエラーをチェックするのに役立ちます。

また、pixmap にデフォルトのコンストラクター ( doorOpen = new QPixmap();) を使用し、使用するファイル名を指定して呼び出すload()と、 の戻り値をチェックload()してエラー チェックを実行できます。

http://qt-project.org/doc/qt-4.8/qpixmap.html#isNull

http://qt-project.org/doc/qt-4.8/qpixmap.html#load

それが役立つことを願っています。

于 2013-06-01T19:04:57.223 に答える