Qt应用程序在声明一个新对象后崩溃

时间:2017-11-30 18:41:57

标签: c++ qt vlc-qt

我遇到了一个非常奇怪的问题。我正在使用VLCQt库并成功运行一个非常简单的视频播放器。但是当我想在主类中添加一个非常简单的Qlabel时,它会在此时崩溃 ui-> setupUi(this)。 输出窗口包含这些statament:

HEAP [VideoPlayer.exe]:为RtlValidateHeap指定的地址无效(00000000002F0000,0000000000334220) VideoPlayer.exe已触发断点。

SimplePlayer.h:

  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

}

SimplePlayer.cpp

--partition <Integer: partition>        The partition to consume from. 

1 个答案:

答案 0 :(得分:0)

您永远不会设置ui类成员,因此您在空指针上调用setupUi(this);

您需要使您的成员成为值而不是指针:

private:
    Ui::SimplePlayer ui;

或者你需要在构造函数的开头创建一个SimplePlayer:

ui = new Ui::SimplePlayer();