只需按下它就可以将QToolButton移动到不同的布局?

时间:2013-09-07 06:30:15

标签: c++ qt

我这里有两种不同的布局,还有一种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(字符串)没有匹配信号*

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

1 个答案:

答案 0 :(得分:2)

  

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

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

除此之外,您可能想重新考虑关于禁用和启用按钮的设计。将它们放入单独的图层中并不适合这样做。

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