我在Qt中遇到了一个非常奇怪的QPixmap问题。我用C++ btw编写代码。无论如何,问题是,只要我想在我的主窗口类中创建一个第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和窗口设计器完成的,正如您可能从代码中猜到的那样。
那么,我在这里做错了什么,导致了这种奇怪的行为?
提前感谢!
发布于 2013-06-02 03:04:57
尝试在初始化或访问它们之前,先在构造函数中将所有指针初始化为零。
此外,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
希望这能有所帮助。
https://stackoverflow.com/questions/16876175
复制相似问题