gpt4 book ai didi

c++ - 当我尝试使用按钮添加 QTabWidget 时 Appcrash

转载 作者:行者123 更新时间:2023-11-28 06:31:23 25 4
gpt4 key购买 nike

我前几天刚开始学Qt,有个问题我不会解决。

首先是文件:

主要.cpp

#include <QApplication>
#include "test.h"


int main(int argc, char *argv[])
{
QApplication a(argc, argv);
test w;
w.show();

return a.exec();
}

测试.h

#ifndef TEST_H
#define TEST_H

#include <QWidget>
#include <QTabWidget>
#include <QTextEdit>
#include <QPushButton>

class test : public QWidget
{
Q_OBJECT


public:
test();
~test();
private slots:
void addT();


private :

QTabWidget *tab;
QPushButton *b,*c;


};

#endif // TEST_H

和测试.cpp

 #include "test.h"

test::test()
{
QTabWidget *tab = new QTabWidget(this);
QPushButton *b = new QPushButton("Add",this);

tab->addTab(b,"test");
QObject::connect(b,SIGNAL(clicked()),this,SLOT(addT()));
}

test::~test()
{

}

void test::addT()
{
QPushButton *c= new QPushButton("Add",this);
tab->addTab(c,"test");
}

程序正常启动但是当我按下按钮添加一个新标签时它崩溃了

请帮助我!

最佳答案

在您的构造函数中,您没有分配给 header 中声明的 QTabWidget 和 QPushButton 实例,而是创建了两个将在范围末尾消失的新实例(具有相同的名称)。选项卡实例仍然是 nullptr,当尝试在 addT 中取消引用它时,您的程序将崩溃。您需要像这样分配给在 test.h 中声明的变量:

test::test() : tab(new QTabWidget(this), b(new QPushButton("Add", this) {
...
}

关于c++ - 当我尝试使用按钮添加 QTabWidget 时 Appcrash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27471473/

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