我这里有两种不同的布局,一种是 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 中测试 UI 时,我第一次点击时,它起作用了;该按钮从一个模板中消失,出现在另一个模板中。当我第二次点击另一个模板时,它没有。编译时,我收到此警告: *QMetaObject::connectSlotsByName:on_toolButton_clicked(string) 没有匹配信号*
知道插槽停止工作的原因吗?
最佳答案
Any ideas why the slot stops working?
您在连接处缺少信号声明,因为警告也有提示。此外,您似乎正在将插槽作为信号传递给连接方法。信号不应与 Qt 应用程序中的槽同名。
除此之外,您可能想重新考虑有关禁用和启用按钮的设计。将它们放在不同的层中并不是合适的做法。
此外,您可能应该避免使用原始字符串来表示一般状态。最好对“切换状态”使用枚举或 bool 值。
关于c++ - 只需按下 QToolButton 即可将其移动到不同的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18670501/