C++ 只需按下QTool按钮,即可将其移动到不同的布局?

C++ 只需按下QTool按钮,即可将其移动到不同的布局?,c++,qt,C++,Qt,这里有两种不同的布局和一个Qtool按钮。我的目标是在单击按钮时在两个布局之间切换该按钮。我想这个代码可以用 片段: void DominionLinux::on_toolButton_clicked(string state) { if (state=="Disabled"){ ui->verticalLayout_Enabled->addWidget(ui->toolButton); state = "Enabled"; }

这里有两种不同的布局和一个Qtool按钮。我的目标是在单击按钮时在两个布局之间切换该按钮。我想这个代码可以用

片段:

void DominionLinux::on_toolButton_clicked(string state)
{
    if (state=="Disabled"){
        ui->verticalLayout_Enabled->addWidget(ui->toolButton);
        state = "Enabled";
    }
    else if (state=="Enabled"){
        ui->verticalLayout_Disabled->addWidget(ui->toolButton);
        state = "Disabled";
    }
}
默认情况下,state==“Disabled”。当我在QTCreator中测试UI时,第一次单击时,它就工作了;按钮将从一个模板中消失,并显示在另一个模板上。当我第二次单击其他模板时,它没有。编译时,我收到以下警告: *QMetaObject::connectSlotsByName:单击的工具按钮上没有匹配信号(字符串)*

你知道为什么插槽停止工作了吗

你知道为什么插槽停止工作了吗

由于警告提示,您缺少连接位置的信号声明。此外,您似乎正在将插槽作为信号传递给connect方法。信号不应与Qt应用程序中的插槽同名

除此之外,您可能需要重新考虑禁用和启用按钮的设计。将它们放在不同的层中不是合适的方法


此外,通常应该避免使用原始字符串来表示状态。最好使用枚举或布尔值作为“切换状态”。

是否显示全部相关代码?“QMetaObject::connectSlotsByName:单击的工具按钮(字符串)没有匹配的信号”->为什么它在那里查找与插槽名称相同的信号名称?您似乎混合了信号和插槽名称。请出示连接线!此外,你为什么要禁用QToolButton,而不是像良好实践所说的那样呢;我接受了你的建议,转而使用布尔运算