I want to do something pretty simple. Click on a toggle-button and get a message-box in 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);
No matter how I format the SLOT in the connect or in the .h, I cannot parse an argument to the slot. This is pretty annoying. However, it works when I do not pass arguments to the slot at all:
cpp:
connect( _show_hide_password, SIGNAL ( toggled( bool ) ), this, SLOT ( showHidePw_ButtonAction() ) );
h:
public slots:
void showHidePw_ButtonAction( );
But I am not allowed to keep the QMessageBox* show_password_warning global in the .h-data.
How to get pass an argument the function declared in the signal?
I suppose that this is a pretty simple use-case. There should be a nice and clean solution which does not require some over-the-top blew up the code signal transforming functions.
It compiles without problem, but I get the following error after starting the program:
QObject::connect: No such slot PinEntryDialog::showHidePw_ButtonAction( QMessageBox* show_password_warning ) in pinentrydialog.cpp:198
The only parameters a slot should have are the same parameters as the signal.
You have two options, both of which are fairly straightforward:
show_password_warning
a member variable of your classshow_password_warning
inside the showHidePw_ButtonAction()
method and delete it when you're done with it.