我这里有两种不同的布局,还有一种QToolButton。我的目标是在单击它时在两个布局之间传输该按钮。我认为这段代码可行,
片段:
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中测试用户界面时,我第一次点击它就可以了;按钮从一个模板消失,并出现在另一个模板上。我第二次点击它在另一个模板上,它没有。编译时,我收到此警告: * QMetaObject :: connectSlotsByName:on_toolButton_clicked(字符串)没有匹配信号*
任何想法为什么插槽停止工作?
答案 0 :(得分:2)
任何想法为什么插槽停止工作?
您错过了连接位置的信号声明,因为警告也提示。此外,您似乎正在将插槽作为信号传递给connect方法。信号不应与Qt应用程序中的插槽同名。
除此之外,您可能想重新考虑关于禁用和启用按钮的设计。将它们放入单独的图层中并不适合这样做。
此外,您通常应该避免使用原始字符串来表示状态。最好使用枚举,或者使用布尔值来表示“切换状态”。