2015-10-24 98 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並刪除它,當你用它做。