У меня очень странная проблема с 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 и дизайнера окон, как вы могли догадаться по коду.
Так что же я здесь делаю не так, что вызывает такое странное поведение?
Заранее спасибо!
Попробуйте инициализировать все ваши указатели в ноль сначала в конструкторе, прежде чем инициализировать или получить к ним доступ.
Также 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
Надеюсь, это поможет.
Других решений пока нет …