当我尝试使用按钮添加QTabWidget时,Appcrash
Appcrash when i try to add QTabWidget with a button
我几天前刚开始学习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");
}
程序正常启动,但是当我按下按钮添加新选项卡时,它崩溃了
请帮助我!
在构造函数中,您不会分配给标头中声明的 QTabWidget 和 QPushButton 实例,而是创建两个新实例(具有相同的名称),这些实例将在作用域结束时消失。选项卡实例仍然是一个 nullptr,当尝试在 addT 中取消引用它时,您的程序将崩溃。您需要像这样分配给 test.h 中声明的变量:
test::test() : tab(new QTabWidget(this), b(new QPushButton("Add", this) {
...
}
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何仅为一个函数添加延迟
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 只能向C++添加一定数量的字符
- Qt和C++:将QLineEdit添加到QTabWidget中
- 将QIcon添加到QTableView单元格
- 为什么我必须在C++中添加一个赋值符号来声明一个数组
- Qt 应用程序在向 QTabWidget 添加选项卡后崩溃
- 当我尝试使用按钮添加QTabWidget时,Appcrash
- 如何在现有的qtabwidget中添加子选项卡