C++ 只需按下QTool按钮,即可将其移动到不同的布局?
这里有两种不同的布局和一个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"; }
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,而不是像良好实践所说的那样呢;我接受了你的建议,转而使用布尔运算