将信号安装到Qt中的插槽

将信号安装到Qt中的插槽,qt,button,signals-slots,Qt,Button,Signals Slots,在单击另一个QPushButton后,我试图启用一个QPushButton,我遇到了一个问题。第一个QPushButton可以发出clicked()信号,而第二个QPushButton只有setEnabled(bool)和setDisabled(bool)格式的插槽 基本上,我正在努力 connect(ui->pbViewVolume, SIGNAL(clicked()), ui->pbSaveAsImage, SLOT(setEnabled(true)));

在单击另一个
QPushButton
后,我试图启用一个
QPushButton
,我遇到了一个问题。第一个
QPushButton
可以发出
clicked()
信号,而第二个
QPushButton
只有
setEnabled(bool)
setDisabled(bool)
格式的插槽

基本上,我正在努力

connect(ui->pbViewVolume,  SIGNAL(clicked()), 
        ui->pbSaveAsImage, SLOT(setEnabled(true)));
由于发送参数少于插槽的信号是不可能的,我如何才能最好地做到这一点?我看到的唯一方法是为我的
main窗口
like创建一个公共插槽

void EnableSaveAsImageButton(){
    ui->pbSaveAsImage->setEnabled(true);
}
但是我不想用这种垃圾函数填充我的
主窗口

  • 您必须创建该插槽
  • 你不需要把那个位置公开,而是让它成为私人的
  • 这个功能不是垃圾
  • 您必须创建该插槽
  • 你不需要把那个位置公开,而是让它成为私人的
  • 这个功能不是垃圾

  • 把吃角子老虎机设为私人的做法很有道理。好吧,也许我把函数称为垃圾太苛刻了。但这真的没有必要;由于
    setEnabled()
    setDisabled
    都存在,如果两者都不带任何参数,那就更好了。在您的情况下可能会更好,但我不认为总体上会更好。如果将状态作为bool变量:“if(foo)w->setEnabled();else w->setDisabled();”同样,一种常见的模式是将可检查按钮的切换(bool)连接到setEnabled/setDisabled。好吧,也许我把函数称为垃圾太苛刻了。但这真的没有必要;由于
    setEnabled()
    setDisabled
    都存在,如果两者都不带任何参数,那就更好了。在您的情况下可能会更好,但我不认为总体上会更好。如果将状态作为bool变量:“if(foo)w->setEnabled();else w->setDisabled();”同样,一种常见模式是将可检查按钮的切换(bool)连接到setEnabled/setDisabled。请注意,不能在connects中给出实际参数值,如示例代码中的
    true
    。您只能提供参数类型,如
    bool
    。请注意,您不能在connects中提供实际参数值,如示例代码中的
    true
    。您只能提供参数类型,如
    bool