调用connect时的问题会给我一个错误
Qt when calling connect gives me an error
我的连接有问题。我的问题是:我有一个名为eventos(events)的类,它将管理所有对象事件(按钮、列表等),但当我调用一个事件时,它会给我一个内存读取错误。这是我的代码:
我的主要课程:
#include "ratagbc.h"
#include "eventos.h"
RataGBC::RataGBC(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
eventos e;
connect(ui.runBtn,SIGNAL(clicked()),this,SLOT(e.on_runBtn_clicked()));
ui.setupUi(this);
}
RataGBC::~RataGBC()
{
}
eventos.h:
#include QDialog.h
#include "ui_ratagbc.h"
class eventos : public QDialog, public Ui::RataGBCClass {
Q_OBJECT
public:
eventos(void);
~eventos(void);
public slots: void on_runBtn_clicked(); };
eventos.cpp:
#include "eventos.h"
#include <QMessageBox>
eventos::eventos(void)
{
}
eventos::~eventos(void)
{
}
void eventos::on_runBtn_clicked()
{
QMessageBox qb;
qb.setText("Rata");
qb.exec();
}
错误为:
RataGBC.exe中0x776a15de处未处理的异常:0xC0000005:读取位置0x00000964时发生访问冲突。
调试时我意识到(或猜测?)错误似乎在SINGAL调用中。
对象eventos e
的作用域和生存期受到构造函数主体的限制。您应该成为RataGBC
的成员;或者从QObject
继承它(我看不到eventos.h,但我相信您已经继承了它,只要您使用信号槽机制),并将其动态创建为RataGBC
的子级,就像这个一样
eventos * e = new eventos();
e->setParent(this);
或者不使其成为子级,而只是在RataGBC
的析构函数中删除它
您的连接方法是..
connect(ui.runBtn,SIGNAL(clicked()),this,SLOT(e.on_runBtn_clicked()));
则对于该信号qt将在RataGBC类中搜索不具有任何这样的槽的槽。为了避免这种情况,u应该将当前接收器对象替换为eventos对象,如下所示。。
connect(ui.runBtn,SIGNAL(clicked()),e,SLOT(e.on_runBtn_clicked()));
这对你有用。。
尝试以下代码,您的eventos e,对象的作用域仅限于构造函数,其次您将其用作slot的目标对象,但您希望e成为目标。此外,您应该使e成为类成员变量,并在析构函数中删除它。
eventos *e = new eventos();
connect(ui.runBtn,SIGNAL(clicked()),e,SLOT(on_runBtn_clicked()));
ui.setupUi(this);
相关文章:
- C++,我收到一个无法理解的编译器错误
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 删除映射和分割错误中的一个过去结束元素
- 为什么我的 heap.h 文件给我一个LNK2001错误?
- 写一个分数类,我无法弄清楚这些错误
- 我在 .h 中有一个枚举类,并且在.cpp错误中有一个运算符重载:与"运算符<<不匹配
- 一个标头库中的错误
- 给定一个整数数组,需要在Max_Heap上运行操作。得到错误"segmentation fault",有什么想法吗?(C++)
- 使用Visual Studio在虚幻引擎中创建一个新的类c ++给了我太多的错误
- 我正在尝试制作一个自平衡机器人,但编译时存在错误。我不知道如何解决它
- 试图修复一个错误,该错误不会让我开始编程其余部分
- MSVC 无法根据模板参数进行数学运算,这是一个错误吗?
- 我正在尝试一个傻瓜 C++ 练习,我遇到了一个错误,说类 'GraduateStudent' 没有任何名为 'advisor' 的字段
- 零四元数和任何向量都不为零的特征积,这是一个错误吗?
- 我有一个线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)错误.我认为这是由于内存管理不好.我可以
- 两个线程一个使用流 Api,另一个线程创建文件失败并出现错误ERROR_SHARING_VIOLATION
- 在使用堆栈为下一个最大数字编写代码时面临 SIGSEGV(分段错误)
- LNK2019错误一个DLL链接到MFC DLL
- 错误:一个声明中有多个类型
- 带有两个运算符的C++11模糊错误(一个左值-第二个右值).底部的