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()。这对于检查它们的错误很有用。

此外,如果您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 回答