2015-10-24 48 views
0

我想做一些非常简单的事情。点击一个切换按钮并在QT中获得一个消息框。无法在信号/插槽/连接例程中传递参数

CPP:

_show_hide_password = new QPushButton("abc"); 
_show_hide_password->setCheckable(true); 
... 
QMessageBox* show_password_warning = new QMessageBox (this); 
... 
connect(_show_hide_password, SIGNAL (toggled(bool)), this, SLOT (showHidePw_ButtonAction(QMessageBox* show_password_warning))); 


void showHidePw_ButtonAction(QMessageBox* dialog){...} 

H:

public slots: 
    void showHidePw_ButtonAction(QMessageBox* dialog); 

无论我如何在连接或.H格式化插槽,我不能解析参数的插槽。这很烦人。然而,它的作品的时候,我不参数传递给插槽都:

CPP:

connect(_show_hide_password, SIGNAL (toggled(bool)), this, SLOT (showHidePw_ButtonAction())); 

H:

public slots: 
    void showHidePw_ButtonAction(); 

但我不能保持QMessageBox提示* show_password_warning全球在.h数据中。

如何获得传递参数在函数中声明的函数?

我想这是一个非常简单的用例。应该有一个不错的和干净的解决方案,它不需要一些过度的顶部的代码信号转换功能。

它编译没有问题,但我得到了下面的错误启动程序后:

QObject::connect: No such slot PinEntryDialog::showHidePw_ButtonAction(QMessageBox* show_password_warning) in pinentrydialog.cpp:198 

回答

1

插槽应该有唯一的参数是相同的参数信号。

你有两个选择,这两者都是相当简单:

  1. show_password_warning类的成员变量
  2. showHidePw_ButtonAction()方法内创建show_password_warning并删除它,当你用它做。