我的代码在发布模式下不起作用,而在Qt的调试模式下工作



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

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

这是我的代码。提前谢谢你。

偏好.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)));

项目.cpp

void Projects::hide_toolbar(bool checked)
{
    ui->toolBar->setVisible(checked);
}

我得到警告:">项目"可能在此函数中使用未初始化 [-Wmaybe-uninitialized] 连接(ui->checkBox_toolbar, 信号(切换(bool((, 项目, 插槽(hide_toolbar(bool(((;

错误:">QObject::connect:无法连接 QCheckBox::切换(布尔(到 (空(::hide_toolbar(布尔(">

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

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

谢谢大家的关注。

我处理了以下代码:

Projects *projects = qobject_cast<Projects *>(parent);

相关内容

  • 没有找到相关文章