C++ 我的代码在Qt中的发布模式下不工作,而在调试模式下工作

C++ 我的代码在Qt中的发布模式下不工作,而在调试模式下工作,c++,qt,qt5,signals-slots,C++,Qt,Qt5,Signals Slots,我有信号/插槽代码。我希望在切换复选框时,另一个类上的函数能够工作。我编写了以下代码。信号/插槽在调试模式下正常工作。但是,它在发布模式下不起作用 我还希望我的程序能够动态运行。我不需要打开新窗口 这是我的密码。先谢谢你 首选项。cpp Projects *projects; // projects = new Projects; // I dont want to create new one. I just want to make changes on the existing Mainw

我有信号/插槽代码。我希望在切换复选框时,另一个类上的函数能够工作。我编写了以下代码。信号/插槽在调试模式下正常工作。但是,它在发布模式下不起作用

我还希望我的程序能够动态运行。我不需要打开新窗口

这是我的密码。先谢谢你

首选项。cpp

Projects *projects;
// projects = new Projects; // I dont want to create new one. I just want to make changes on the existing Mainwindow (Projects class)

connect(ui->checkBox_toolbar, SIGNAL(toggled(bool)), projects, SLOT(hide_toolbar(bool)));
connect(ui->checkBox_button, SIGNAL(toggled(bool)), projects, SLOT(hide_buttons(bool)));
void Projects::hide_toolbar(bool checked)
{
    ui->toolBar->setVisible(checked);
}
项目。cpp

Projects *projects;
// projects = new Projects; // I dont want to create new one. I just want to make changes on the existing Mainwindow (Projects class)

connect(ui->checkBox_toolbar, SIGNAL(toggled(bool)), projects, SLOT(hide_toolbar(bool)));
connect(ui->checkBox_button, SIGNAL(toggled(bool)), projects, SLOT(hide_buttons(bool)));
void Projects::hide_toolbar(bool checked)
{
    ui->toolBar->setVisible(checked);
}
我得到警告:此函数中可能未初始化就使用了“项目”[-Wmaybe uninitialized]connect(用户界面->复选框工具栏,信号(切换(bool)),项目,插槽(隐藏工具栏(bool))


和错误:“QObject::connect:无法将QCheckBox::toggled(bool)连接到(null)::隐藏工具栏(bool)”

警告会准确地告诉您出了什么问题。
项目
指针变量未初始化。它没有指向有效的
项目
对象。你不能那样使用它,那是未定义的行为。它似乎在调试模式下工作纯粹是巧合


注释掉的代码说明了一些关于现有主窗口的信息。如果要连接到该主窗口的插槽,首先需要获取指向该主窗口对象的指针。然后您可以连接。

警告会准确地告诉您出了什么问题。
项目
指针变量未初始化。它没有指向有效的
项目
对象。你不能那样使用它,那是未定义的行为。它似乎在调试模式下工作纯粹是巧合


注释掉的代码说明了一些关于现有主窗口的信息。如果要连接到该主窗口的插槽,首先需要获取指向该主窗口对象的指针。然后您可以连接。

谢谢大家的关注

我使用以下代码进行处理:

Projects *projects = qobject_cast<Projects *>(parent);
Projects*Projects=qobject\u cast(父级);

谢谢大家的关注

我使用以下代码进行处理:

Projects *projects = qobject_cast<Projects *>(parent);
Projects*Projects=qobject\u cast(父级);

请提供一个答案。“不起作用”的确切含义是什么?另外,请使用指针语法进行连接,这有助于查找错误:
connect(ui->checkBox\u工具栏,&QCheckbox::toggled,projects,&projects::hide\u工具栏)在调试模式下工作但在发布模式下失败的程序通常是由指针上的错误操作(取消引用null、从数组末尾脱落、使用未初始化的指针等)引起的。您提供的代码没有提供任何关于原因的有用信息-如果没有一般性建议(如我所给出的)或猜测(关于您未显示的代码行为),您所能期望的最好结果就是。信号/插槽在发布模式下无法正常工作。我有一个错误:“QObject::connect:无法将QCheckBox::toggled(bool)连接到(null)::hide_toolbar(bool)”并且我有一个警告:“projects”可以在这个函数中未初始化的情况下使用[-Wmaybe uninitialized]connect(ui->checkBox_toolbar,SIGNAL(toggled(bool)),projects,SLOT(hide_toolbar(bool));请提供一个答案。“不工作”的确切含义是什么?另外,请使用指针语法进行连接,这有助于查找错误:
connect(ui->checkBox\u工具栏,&QCheckbox::toggled,projects,&projects::hide\u工具栏)在调试模式下工作但在发布模式下失败的程序通常是由指针上的错误操作(取消引用null、从数组末尾脱落、使用未初始化的指针等)引起的。您提供的代码没有提供任何关于原因的有用信息-如果没有一般性建议(如我所给出的)或猜测(关于您未显示的代码行为),您所能期望的最好结果就是。信号/插槽在发布模式下无法正常工作。我有一个错误:“QObject::connect:无法将QCheckBox::toggled(bool)连接到(null)::hide_toolbar(bool)”并且我有一个警告:“projects”可以在这个函数中未初始化的情况下使用[-Wmaybe uninitialized]connect(ui->checkBox_toolbar,SIGNAL(toggled(bool)),projects,SLOT(hide_toolbar(bool));那我该怎么重写代码呢?你能给我举个代码的例子吗?我不能。从您的代码片段中,不清楚如何获取指向现有主窗口对象的指针。那么,我应该如何重写代码?你能给我举个代码的例子吗?我不能。从代码片段看,不清楚如何获取指向现有主窗口对象的指针。