我有信号/插槽代码。我希望另一个类上的函数在切换复选框时工作。我编写了以下代码。信号/插槽在调试模式下工作正常。但是,它在发布模式下不起作用。
我还希望我的程序能够动态运行。我不需要打开一个新窗口。
这是我的代码。提前谢谢你。
偏好.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);