只需按下QToolButton即可将其移动到不同的布局

Move QToolButton to different layouts by just pressing it?

本文关键字:移动 布局 QToolButton      更新时间:2023-10-16

我这里有两种不同的布局,还有一个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";
    }
}

默认情况下,状态 == "已禁用"。当我在 QTCreator 中测试 UI 时,我第一次单击时,它可以工作;该按钮从一个模板中消失,并显示在另一个模板上。当我在另一个模板上单击时,我第二次单击时,它没有。编译时,我收到以下警告:*QMetaObject::connectSlotsByName: on_toolButton_clicked(字符串)没有匹配信号*

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

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

您在连接位置缺少信号声明,因为警告也暗示了这一点。此外,您似乎正在将插槽作为信号传递给连接方法。信号不应与Qt应用程序中的插槽同名。

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

此外,您可能应该避免使用原始字符串来表示一般状态。最好使用枚举或布尔值表示"切换状态"。