我有信号/插槽代码。当复选框处于切换状态时,我希望另一个类上的函数起作用。我写了下面的代码。信号/插槽在调试模式下正常工作。但是,它在发布模式下不起作用。
我也希望我的程序能够动态工作。我不需要打开新窗口。
这是我的代码。先感谢您。
preferences.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)));
projects.cpp
void Projects::hide_toolbar(bool checked)
{
ui->toolBar->setVisible(checked);
}
我得到警告:'projects'可能未在此函数中使用[-Wmaybe-uninitialized] connect(ui-> checkBox_toolbar,SIGNAL(toggled(bool)),项目,SLOT(hide_toolbar(bool) ));
错误:“ QObject :: connect:无法将QCheckBox :: toggled(bool)连接到(null):: hide_toolbar(bool)”
答案 0 :(得分:0)
警告会告诉您确切的问题。 projects
指针变量未初始化。它没有指向有效的Projects
对象。您不能那样使用,这是不确定的行为。看来它在调试模式下可以正常工作。
您注释掉的代码说明了现有主窗口的某些内容。如果要连接到该主窗口的插槽,则需要首先获取指向该主窗口对象的指针。然后即可连接。
答案 1 :(得分:0)
谢谢大家的关注。
我用以下代码处理了
Projects *projects = qobject_cast<Projects *>(parent);