gpt4 book ai didi

c++ - Qt 应用程序在声明新对象后崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 12:53:57 25 4
gpt4 key购买 nike

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

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();
};

简单播放器.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

}

最佳答案

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

你需要让你的成员成为一个值而不是一个指针:

private:
Ui::SimplePlayer ui;

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

ui = new Ui::SimplePlayer();

关于c++ - Qt 应用程序在声明新对象后崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47580502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com