Qt QPixmap指针限制

Qt QPixmap pointer limit

本文关键字:指针 QPixmap Qt      更新时间:2023-10-16

我有一个非常奇怪的问题QPixmap在Qt。顺便说一句,我正在用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和窗口设计器完成的,正如你可能从代码中猜到的那样。

那么我在这里做错了什么导致了这种奇怪的行为?

提前感谢!

在初始化或访问指针之前,尝试先在构造函数中将所有指针初始化为0。

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 #负荷

希望对你有帮助。