Приложение Qt падает после объявления нового объекта

Я столкнулся с очень странной проблемой. Я использую библиотеку VLCQt и успешно запускаю очень простой видеоплеер. но когда я хочу добавить очень простой Qlabel в основной класс, в этот момент происходит сбой ui-> setupUi (это).
Окно вывода содержит следующие данные:

HEAP [VideoPlayer.exe]: неверный адрес, указанный для RtlValidateHeap (00000000002F0000, 0000000000334220)
VideoPlayer.exe вызвал точку останова.

SimplePlayer.h:

class SimplePlayer : public QMainWindow
{
Q_OBJECT

public:
SimplePlayer(QWidget *parent = 0);
~SimplePlayer();

private:
Ui::SimplePlayer *ui;
VlcInstance *_instance;
VlcMedia *_media;
VlcMediaPlayer *_player;
//QLabel *_lbl;//  if I declare a very simple Qlabel the app crashes

private slots:
void openLocal();
void openUrl();
};

SimplePlayer.cpp

  SimplePlayer::SimplePlayer(QWidget *parent)
: QMainWindow(parent)
{
ui->setupUi(this);
_instance = new VlcInstance(VlcCommon::args(), this);
_player = new VlcMediaPlayer(_instance);
_player->setVideoWidget(ui->video);
ui->video->setMediaPlayer(_player);
ui->volume->setMediaPlayer(_player);
ui->volume->setVolume(50);
ui->seek->setMediaPlayer(_player);
// _lbl = new QLabel;//  if I declare a very simple Qlabel the app crashes
...//connections

}

1

Решение

Вы никогда не устанавливаете свой ui член класса, так что вы звоните setupUi(this); на нулевом указателе.

Вам нужно либо сделать свой элемент значением, а не указателем:

private:
Ui::SimplePlayer ui;

Или вам нужно создать SimplePlayer в начале вашего конструктора:

ui = new Ui::SimplePlayer();
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]