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

标签 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 中测试 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/

相关文章:

c++ - 需要设计建议 C++ : Want to implement a threaded queue for other threads to pass data

c++ - 动态转换为函数参数类型 (C++)

c++ - QT 应该在 int 增量上阻塞吗?

java - 如何将 QByteArray 转换为 QString?

c++ - 在没有 X 的 Linux 上编译 Qt 应用程序

qt - 如何使用 Qt 在文本文件中搜索字符串

main() 的 C++ void 返回类型

c++ - 未初始化的值是由堆栈分配创建的

c++ - C++ 中的 const 双表达式

c++ - 了解向 QML 公开 C++ 类型的属性