1

我这里有两种不同的布局,一种是 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: No matching signal for on_toolButton_clicked(string)*

任何想法为什么插槽停止工作?

4

1 回答 1

2

任何想法为什么插槽停止工作?

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

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

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

于 2013-09-07T08:58:34.427 回答